ios - 如何正确继承 UITableViewController

标签 ios objective-c cocoa-touch

我有一个 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/

相关文章:

iphone - iOS:是否可以使 UINavigationBar 更高,并使屏幕下方的其他 View 为 "push"?

objective-c - 如何过滤不包含字符串的 NSMutableArray 对象?

ios - 将旧的 CoreData 模型导入新项目

objective-c - 使用 ARC 将 CFErrorRef 转换为 NSError(或相反)

iphone - iOS UISearchBar 在导航栏 iPhone 中的横向模式高度

objective-c - 在 cocoa 中使用绑定(bind)时,更改未反射(reflect)在 View 中

iPhone 开发 : How to build a custom view hierarchy?

ios - 核心基础vs基础或核心基础+基础

ios - 如何快速从通用数组中搜索特定元素,例如 [AnyObject]?

ios - 如何在uicollectionview中的两个单元格之间画线