iOS:自定义单元格和实用程序

iOS:自定义单元格和实用程序,ios,uitableview,Ios,Uitableview,当我使用自定义单元格创建tableview时,我使用 static NSString *CellIdentifier = @"mycell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 它工作得很好(我使用故事板和ARC) 但有时我会看到这种控制: if (!cell){ //here the alloc

当我使用自定义单元格创建tableview时,我使用

static NSString *CellIdentifier = @"mycell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
它工作得很好(我使用故事板和ARC)

但有时我会看到这种控制:

if (!cell){
    //here the alloc of a custom cell
}

我应该只在有自定义单元格及其类时才使用它吗?如果我使用故事板,我需要它吗?如果您正在使用故事板,请使用原型单元,谢谢。在本教程中,有一个关于原型单元的完整部分:

如果您在故事板中使用原型单元,您将永远无法进入
If
语句,因此您不需要它。否则,您将执行此操作,例如,当您从
xib
文件实例化单元格时,您将在
if
语句中执行此操作。

如果没有要出列的单元格,则会引发异常。所以,检查单元格是否为零是没有意义的。在这次通话后,手机不可能是零。您将拥有有效的单元格,或者引发异常

这意味着您必须注册一个单元格(通过故事板或代码)才能使此调用生效

还有第二种(或旧的)方法可以将单元格出列,
dequeueReusableCellWithIdentifier:
,而不使用
forIndexPath:
。在早期版本中,当无法注册单元格时,我们就是这样做的。如果没有为标识符注册任何单元格,此方法将返回nil,您必须在代码中创建一个单元格


我会坚持注册单元格和
dequeueReusableCellWithIdentifier:forIndexPath:
。在这种情况下,不需要
if(!cell)
部分。例外情况将确保您不会忘记注册您的单元格

如果我们使用的是情节提要,则不必这样做。请签出此链接