3 回答
TA贡献1785条经验 获得超4个赞
最重要的区别是,forIndexPath:如果您没有为标识符注册类或笔尖,则该版本会断言(崩溃)。在这种情况下,较旧的(非forIndexPath:)版本会返回nil。
您可以通过发送registerClass:forCellReuseIdentifier:到表视图来为标识符注册一个类。您可以通过发送registerNib:forCellReuseIdentifier:到表视图为该标识符注册一个笔尖。
如果在情节提要中创建表格视图和单元原型,则情节提要加载器将负责注册在情节提要中定义的单元格原型。
第200节-WWDC 2012的Cocoa Touch的新功能讨论了forIndexPath:大约8时30分开始的(新的)版本。它说“您将始终获得一个初始化的单元格”(没有提到如果您不注册类或笔尖则它将崩溃)。
该视频还说:“这将是该索引路径的正确大小”。大概这意味着它将通过查看表视图自身的宽度并调用委托的tableView:heightForRowAtIndexPath:方法(如果已定义)来设置单元格的大小,然后再返回它。 这就是为什么它需要索引路径。
TA贡献1811条经验 获得超4个赞
我从未理解过苹果为什么要创建更新的方法dequeueReusableCellWithIdentifier:forIndexPath:。他们关于他们的文件不完整,并且具有误导性。我能够辨别这两种方法之间的唯一区别是,如果较旧的方法找不到返回传入标识符的单元格,则较旧的方法可以返回nil;而如果较新的方法无法返回,则该方法会崩溃。一个细胞。如果正确设置了标识符,则保证这两种方法都返回一个单元格,并将该单元格放在情节提要中。如果您注册了类或xib,并且将您的单元格设置为代码或xib文件,则也保证这两种方法都将返回单元格。
- 3 回答
- 0 关注
- 847 浏览
添加回答
举报