我有一个UITableViewController,我在cellForRowAtIndexPath方法中定义了一些特定的单元属性.我实际定义任何特定内容的唯一方法是cellForRowAtIndexPath方法.我没有包括任何其他方法. (基本上除了cellForRowAtIndexPath之外,UITableViewController是空的)
现在,我试图基于这个UITableViewController进行子类化,但我的问题是如何为sublcass设置cellForRowAtIndexPath?如果我将其留空,应用程序会崩溃,因为它需要定义一个单元格.但是,它不应该使用基类中定义的单元格吗?
我究竟需要在子类’cellForRowAtIndexPath方法中使用我在基类中创建的单元格设置?
编辑我被告知解决方案,对于任何想知道的人,你用类似的东西调用你的子类中的超级类
UITableViewCell *cell = (UITableViewCell *)[super tableView:tableView cellForRowAtIndexPath:indexPath];
return cell;
这会将超级单元格返回到您的sublcass,然后返回该单元格.
最佳答案 此方法是表视图数据源协议的必需部分,您需要指定该协议.如果你看一下UITableViewController的开发者文档,你会看到cellForRowAtIndexPAth不是它的函数;它位于UITableViewDataSource
which you can find here下.这意味着,基类中没有实现;协议中的函数是抽象的,你应该扩展它们并实现它们.
如果您打算创建一个空表,则可以返回空单元格.只需分配它们并在函数中返回它们;子类化表视图单元格不是必需的.一旦您的应用程序停止崩溃,您可以指定所需的文本.使用indexPath使不同部分或不同行的单元格指定不同的文本.