iOS:自定义单元格和实用程序
当我使用自定义单元格创建tableview时,我使用iOS:自定义单元格和实用程序,ios,uitableview,Ios,Uitableview,当我使用自定义单元格创建tableview时,我使用 static NSString *CellIdentifier = @"mycell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 它工作得很好(我使用故事板和ARC) 但有时我会看到这种控制: if (!cell){ //here the alloc
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)
部分。例外情况将确保您不会忘记注册您的单元格 如果我们使用的是情节提要,则不必这样做。请签出此链接