我有一个 UITableViewController
,我在其中的 cellForRowAtIndexPath
方法中定义了一些特定的单元格属性。我实际定义任何特定内容的唯一方法是 cellForRowAtIndexPath
方法。我没有包括任何其他方法。 (所以基本上 UITableViewController 除了 cellForRowAtIndexPath 之外是空的)
现在,我正在尝试基于此 UITableViewController 进行子类化,但我的问题是如何为子类设置 cellForRowAtIndexPath?如果我将其留空,应用程序会崩溃,因为它需要定义一个单元格。但是,它不应该使用基类中定义的单元格吗?
我必须在子类的 cellForRowAtIndexPath 方法中添加什么才能使用我在基类中创建的单元格设置?
edit 有人告诉我解决方案,对于任何想知道的人,您可以在子类中调用父类(super class),如
UITableViewCell *cell = (UITableViewCell *)[super tableView:tableView cellForRowAtIndexPath:indexPath];
return cell;
这会将 super 的 cell 返回给你的 sublcass,然后你返回那个 cell。
最佳答案
该方法是 TableView 数据源协议(protocol)的必需部分,需要您指定。如果您查看 UITableViewController 的开发人员文档,您会发现 cellForRowAtIndexPAth 不是它的函数;它在 UITableViewDataSource which you can find here 下.这意味着,基类中没有实现;这些功能在协议(protocol)中是抽象的,您应该扩展它们并实现它们。
如果您计划创建一个空表格,您可以返回空单元格。只需分配它们并在函数中返回它们;不需要对 TableView 单元格进行子类化。一旦您的应用停止崩溃,您就可以指定您需要的文本。使用indexPath可以让不同section或不同行的cell指定不同的文本。
关于ios - 如何正确继承 UITableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633345/