一尘不染

何时使用dequeueReusableCellWithIdentifier和dequeueReusableCellWithIdentifier:forIndexPath

swift

dequeueReusableCellWithIdentifier有两个重载,我试图确定何时应该使用一个重载?

关于forIndexPath函数的Apple文档指出: “此方法使用索引路径基于表视图中单元格的位置执行其他配置。”

我不确定该如何解释?


阅读 308

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

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

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

2020-07-07