何时使用deQueeReusableCellWithIdfier与deQueeReusableCellWithIdfier:forIndexPath

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (31)

脱队列有两个过载,ReusableCellWithIdentifier,我试图确定何时使用其中一个与另一个?

有关forIndexPath函数状态的苹果文档,“此方法使用索引路径根据单元格在表视图中的位置执行附加配置。”

我不知道怎么解释?

提问于
用户回答回答于

最重要的区别是forIndexPath:如果没有为标识符注册类或nib,则版本断言。非forIndexPath版本返回nil那样的话。

通过发送registerClass:forCellReuseIdentifier:到桌面视图。通过发送registerNib:forCellReuseIdentifier:到桌面视图。

如果在情节提要中创建表视图和单元格原型,则故事板加载程序负责注册在情节提要中定义的单元格原型。

forIndexPath:版本开始在8m30秒左右。它说:“将始终得到一个初始化的单元格”(没有提到如果没有注册一个类或nib,它就会崩溃)。

视频中还说,“它将是适合索引路径的大小”。这可能意味着它将在返回之前设置单元格的大小,方法是查看表视图本身的宽度并调用委托的tableView:heightForRowAtIndexPath:方法(如果定义的话)。这就是为什么它需要索引路径。

用户回答回答于

它要么重新使用现有的单元格,要么创建一个新的单元格,如果没有单元格,则返回。

而传统的dequeueReusableCellWithIdentifier:如果存在的话会返回一个单元格,即如果有一个单元格可以被重用,那么返回它,否则返回nil。 所以你必须写一个条件来检查零值。 要回答你的问题,请使用dequeueReusableCellWithIdentifier:当你想支持iOS 5及更低版本,因为dequeueReusableCellWithIdentifier:forIndexPath仅适用于iOS 6+

扫码关注云+社区