实现自定义UITableViewController类并避免委托警告

时间:2012-02-02 21:04:32

标签: iphone ios cocoa-touch uitableview delegates

我正在尝试在UITableViewController中制作我自己的UIViewController版本(以获得更多自定义)。所以在我的超类中,我实现了委托和数据源,并将UITableView对象委托和数据源属性设置为“this”。唯一的问题是我得到编译器警告抱怨我没有实现强制dataSource和委托方法。当我继承自定义UITableViewController时,我希望能够实现这些方法。

是否有一种简洁的方法可以使这些警告消失,或者是我唯一的方法来放置强制委托方法的空版本,然后在子类中覆盖它们?这是不好的做法吗?任何人都可以通过UITableViewController课程了解Apple如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

我将此模式用于“抽象”方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    [self doesNotRecognizeSelector:_cmd];
    abort();
}

_cmd变量是当前方法的选择器。它会自动提供,就像self一样。

你必须调用abort(),因为编译器知道abort()没有返回,但它不知道doesNotRecognizeSelector:

至少在iOS 5中,UITableViewController方法不为空,因为UITableViewController支持从故事板中加载预定义(静态)行。