dequeueReusableCellWithIdentifier有两个重载,我试图确定何时应该使用一个重载?
关于forIndexPath函数的Apple文档指出: “此方法使用索引路径基于表视图中单元格的位置执行其他配置。”
我不确定该如何解释?
最重要的区别是,forIndexPath:如果您没有为标识符注册类或笔尖,则该版本会断言(崩溃)。在这种情况下,forIndexPath:将返回较旧的(非)版本nil。
forIndexPath:
nil
您可以通过发送registerClass:forCellReuseIdentifier:到表视图来为标识符注册一个类。您可以通过发送registerNib:forCellReuseIdentifier:到表视图为该标识符注册一个笔尖。
registerClass:forCellReuseIdentifier:
registerNib:forCellReuseIdentifier:
如果在情节提要中创建表格视图和单元原型,则情节提要加载器将负责注册在情节提要中定义的单元格原型。
第200节-WWDC 2012的Cocoa Touch的新功能讨论了forIndexPath:大约8时30分开始的(新的)版本。它说“您将始终得到一个初始化的单元格”(没有提到如果您不注册类或笔尖则它将崩溃)。
该视频还说“这将是该索引路径的正确大小”。大概这意味着它将通过查看表视图自身的宽度并调用委托的tableView:heightForRowAtIndexPath:方法(如果已定义)来设置单元格的大小,然后再返回它。 这就是为什么它需要索引路径。
tableView:heightForRowAtIndexPath: