我不明白这一点:我的 cellForRowAtIndexPath: indexPath: 返回一个正确的 UITableViewCell。(我有一个断言,大意是它不是 nil 并且有痕迹来证明它)
但我仍然得到这个零星的例外?
这就是我分配/重用单元格的方式:
...
{
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier: cellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault
reuseIdentifier: cellIdentifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
assert(cell);
// (code to populate cell)
// ...
assert( cell != nil);
NSLog(@"returning cell %@ type %@", cell, NSStringFromClass([cell class]));
// edit: showing actual return value
return cell;
}
崩溃在日志中如下所示:
2013-04-17 16:46:05.323 .. -[SomeEditViewController tableView:cellForRowAtIndexPath:] returning cell <UITableViewCell: 0x20d1a2e0; frame = (0 351; 320 43); hidden = YES; autoresize = W; layer = <CALayer: 0x20d1a410>> type UITableViewCell
2013-04-17 16:46:15.296 ... *** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /SourceCache/UIKit/UIKit-2380.17/UITableView.m:5471
2013-04-17 16:46:15.301 ... *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
我查看了许多其他具有类似问题的条目。我难住了!我做了功课,确保我返回的单元格不为零,但我仍然得到这个断言!
任何人都可以帮助解决这个问题吗?谢谢