为了账号安全,请及时绑定邮箱和手机立即绑定

何时使用dequeueReusableCellWithIdentifier和dequeue

何时使用dequeueReusableCellWithIdentifier和dequeue

汪汪一只猫 2019-10-05 14:57:05
dequeueReusableCellWithIdentifier有两个重载,我想确定何时应该使用一个重载?关于forIndexPath函数的Apple文档指出:“此方法使用索引路径基于表视图中单元格的位置执行其他配置。”我不确定该如何解释?
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

最重要的区别是,forIndexPath:如果您没有为标识符注册类或笔尖,则该版本会断言(崩溃)。在这种情况下,较旧的(非forIndexPath:)版本会返回nil。


您可以通过发送registerClass:forCellReuseIdentifier:到表视图来为标识符注册一个类。您可以通过发送registerNib:forCellReuseIdentifier:到表视图为该标识符注册一个笔尖。


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


第200节-WWDC 2012的Cocoa Touch的新功能讨论了forIndexPath:大约8时30分开始的(新的)版本。它说“您将始终获得一个初始化的单元格”(没有提到如果您不注册类或笔尖则它将崩溃)。


该视频还说:“这将是该索引路径的正确大小”。大概这意味着它将通过查看表视图自身的宽度并调用委托的tableView:heightForRowAtIndexPath:方法(如果已定义)来设置单元格的大小,然后再返回它。 这就是为什么它需要索引路径。


查看完整回答
反对 回复 2019-10-05
?
波斯汪

TA贡献1811条经验 获得超4个赞

我从未理解过苹果为什么要创建更新的方法dequeueReusableCellWithIdentifier:forIndexPath:。他们关于他们的文件不完整,并且具有误导性。我能够辨别这两种方法之间的唯一区别是,如果较旧的方法找不到返回传入标识符的单元格,则较旧的方法可以返回nil;而如果较新的方法无法返回,则该方法会崩溃。一个细胞。如果正确设置了标识符,则保证这两种方法都返回一个单元格,并将该单元格放在情节提要中。如果您注册了类或xib,并且将您的单元格设置为代码或xib文件,则也保证这两种方法都将返回单元格。


查看完整回答
反对 回复 2019-10-05
  • 3 回答
  • 0 关注
  • 817 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信