这是一个XCode错误,或者我在这里错过了一个关键规则。
更新 - 这在XCode / Storyboard中成为一个奇怪的错误的可能性是什么?
情况:
在“cellForRowAtIndexPath”中我基本上有:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewCell"];
return cell;
这会引发异常:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
我已经尝试过的事情:
我感觉它与我在那里构建的树有关,这是一个TabBarController,加载一个NavigationController,加载一个TableViewController,提供一些项目,一个被点击,它加载另一个TableViewController,它无法以某种方式使用自定义单元格。
重要:
- 问题是故事板应该确保:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewCell"];
永远不会返回NIL(与没有Storyboard / iOS4不同)。但是,我的是零。我不能,为了它的原因,弄清楚发生了什么。
答案 0 :(得分:2)
在您的&#34; ViewController.h&#34;中,将<UITableViewDataSource>
添加到您的列表中
协议
@interface ViewController:UIViewController
<UITableViewDataSource>
您可能还想添加<UITableViewDelegate>
,但我没有。
在你的&#34; ViewController.m&#34;设置表视图数据源 功能
#pragma mark - Table view data source}- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [yourCells count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NewCell *cell = (NewCell *)[tableView dequeueReusableCellWithIdentifier:@"NewCell"]; if (cell == nil) { NSLog(@"Cell is NIL"); cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } return cell;
在Storyboard中,连接UITableView&#34;数据源&#34;和 &#34;代表&#34;对ViewController的引用。
如果这些已经完成,我认为它应该有效。
希望这有助于=)
答案 1 :(得分:1)
我总是在故事板中使用自定义单元格,如下所示:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
return cell;
确保行/部分的数量至少为一个。另一件要检查的是你在故事板中将UITableViewController设置为自定义类名。
答案 2 :(得分:0)
答案 3 :(得分:0)
要解决此问题,请在dequeueReusableCellWithIdentifier语句的上方添加以下内容:
static NSString *CellIdentifier = @"NewCell";
确保标识符与Storyboard
中的原型单元格匹配答案 4 :(得分:0)
要回答这个问题可能会迟到,但我打赌this会解决所有问题