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

时间:2014-05-08 13:43:41

标签: ios uitableview

当我使用自定义单元格创建表格视图时,我使用此

static NSString *CellIdentifier = @"mycell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

它工作正常(我使用故事板和ARC)

但有时候我会看到这个控件:

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

我应该只在我有自己的类的自定义单元格时才使用它吗?如果我使用故事板,我需要它吗?感谢

4 个答案:

答案 0 :(得分:1)

如果没有要出列的单元格,

dequeueReusableCellWithIdentifier:forIndexPath:将引发异常。因此检查细胞是否为零是没有意义的。在此次通话后,单元格无法为零。您将拥有一个有效的单元格或引发异常。

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

第二种(或旧的)方法是将单元格dequeueReusableCellWithIdentifier:出列,而不使用forIndexPath:。这是我们在早期版本中无法注册单元格的方式。如果没有为标识符注册单元格,则此方法将返回nil,并且您必须在代码中创建单元格。

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

答案 1 :(得分:0)

如果您使用故事板,请使用原型单元格。在本教程中,有一个关于原型单元格的整个部分:http://www.raywenderlich.com/50308/storyboards-tutorial-in-ios-7-part-1

答案 2 :(得分:0)

如果您使用带有故事板的原型单元格,那么您将永远不会进入if声明,因此您不需要它。否则你会这样做,例如当你从xib文件中实例化单元格时,你会在if语句中执行此操作。

答案 3 :(得分:0)

如果我们使用storyboard,则没有必要。请查看此链接

http://useyourloaf.com/blog/2012/06/07/prototype-table-cells-and-storyboards.html