我正在尝试制作我自己的 UITableViewController
版本在 UIViewController
(更多定制)。因此,在我的父类(super class)中,我同时实现了委托(delegate)和数据源并设置了 UITableView
对象委托(delegate)和数据源属性到“this”。唯一的问题是我收到一个编译器警告,提示我没有实现强制的 dataSource 和委托(delegate)方法。当我将自定义 UITableViewController
子类化时,我希望能够实现这些方法.
有没有一种巧妙的方法可以让这些警告消失,或者是我放置强制委托(delegate)方法的空版本,然后在子类中覆盖它们的唯一方法?这是不好的做法吗?任何人都知道 Apple 如何通过 UITableViewController
实现这一点类(class)?
最佳答案
我将此模式用于“抽象”方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
[self doesNotRecognizeSelector:_cmd];
abort();
}
_cmd
变量是当前方法的选择器。它是自动提供的,就像 self
.您必须调用
abort()
因为编译器知道 abort()
不返回,但它不知道 doesNotRecognizeSelector:
.至少在 iOS 5 中,
UITableViewController
方法不为空,因为 UITableViewController
支持从 Storyboard 加载预定义(静态)行。
关于iphone - 实现自定义 UITableViewController 类并避免委托(delegate)警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119976/