无法使 table 视图单元格出队

Unable to dequeue table view cell

我正在尝试在我的 iOS 应用程序中创建动态 table,但不断收到臭名昭著的消息:

unable to dequeue a cell with identifier CEMBurialCell - must register a nib or a class for the identifier".

下面是我的代码,但它不起作用。

下面是主控中的一些数据

#import "CEMBurialCell.h"    // The custom cell I want to use in the tableView

@interface CEMMainViewController () <UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate>
{
    UITableView *deathstoday;
}

这是 viewWillAppear: 方法中的一些代码。

deathstoday = [[UITableView alloc] initWithFrame:CGRectMake(1, 370, 300, 50)];
deathstoday.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
deathstoday.delegate = self;
deathstoday.dataSource = self;
deathstoday.scrollEnabled = YES;    
[self.view addSubview:deathstoday];    
[self fetchfeed];   // This populates the array for the tableview

这是 viewDidLoad 方法中的代码。

UINib *nib = [UINib nibWithNibName:@"CEMBurialCell" bundle:nil];    
[deathstoday registerNib:nib forCellReuseIdentifier:@"CEMBurialCell"];

这是我收到错误的地方:

unable to dequeue a cell with identifier CEMBurialCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CEMBurialCell *cell = [tableView
    dequeueReusableCellWithIdentifier:@"CEMBurialCell"  forIndexPath:indexPath];

我在 viewDidLoad 方法中初始化了 CEMBurialCell,为什么会出现此错误?我让这个例程在一个初始化为:

的程序中工作
self = [super initWithStyle:UITableViewStylePlain]; // in program that does work

而无法运行的程序的初始化为

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];   // in program that doesn't work

所以以上两行是两个程序的主要区别。我使用自定义单元格而不是 UITableView 单元格,因为我的单元格中需要一个 actionBlock。那么为什么第二个程序在我的自定义单元格上出现错误呢?相同的自定义单元格 CEMBurialCell 在另一个程序中工作。我错过了什么?

你的问题很简单。在 viewDidLoad 中,deathstodaynil 所以你实际上并没有注册笔尖。

为什么要等到 viewWillAppear: 才创建 table 视图?在调用 registerNib:forCellReuseIdentifier:.

之前,您应该在 viewDidLoad 中创建 table 视图

只需确保 table 视图的框架基于 self.view.bounds,这样 autoresizingMask 就能按预期工作。