我敢肯定,这个问题的答案很简单,但似乎找不到。我的UITableViewController中有以下代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell==nil)
    {
        NSLog(@"Cell is nil!");
    }

    return cell;
}

但是在我的日志输出中

细胞为零!

然后立即

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“UITableView dataSource必须从tableView:cellForRowAtIndexPath返回一个单元格:”
*首先抛出调用堆栈:
(0x1b68d72 0x135fe51 0x1b68bd8 0xb0e315 0xcb373 0x63578 0xcb1d3 0xcff19 0xcffcf 0xb9384 0xc952e 0x691bc 0x13736be 0x215c3b6 0x2150748 0x215055c 0x20ce7c4 0x20cf92f 0x2171da2 0x1b4b4 0x1be63 0x2c2be 0x2cf9f 0x1f3fd 0x1ac5f39 0x1ac5c10 0x1adeda5 0x1adeb12 0x1b0fb46 0x1b0eed4 0x1b0edab 0x1b28f 0x1ce71 0x253d 0x2465)
libc ++ abi.dylib:终止调用引发异常
(lldb)

有谁知道为什么会这样,更重要的是,如何解决呢?

提前致谢。

最佳答案

如果为零,则必须创建单元格,因为方法

[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

从表视图缓存返回未使用的单元格。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:NSIndexPath*)indexPath
{
   static NSString *CellIdentifier = @"Cell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (cell == nil)
   {
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
   }

   //configure cell

   return cell;
}

关于iphone - UITableViewCell为Nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11111623/

10-12 05:40