有时我想继承 UIViewController 以进行一些应用程序范围的自定义。例如。所有视图控制器都应该在 viewDidLoad 或 viewWillAppear 期间执行的操作。
自然,我继承 UIViewController 并从那里开始,所有视图控制器都继承自那里。但是一些控制器运行表。并且有为此目的而设计的 UITableViewController。
所以我也继承了 UITableViewController 并在那里做同样的事情。用 OOP 术语来说,这似乎不是最聪明的事情。并且没有多重继承等。
由于 UITableViewController 继承自 UIViewController ...
现在我问自己为什么不创建自己的表格视图控制器,它继承自我自己的视图控制器子类并添加所有表格内容。但是什么是“所有餐桌上的东西”?
- xcode 为每个新的表视图控制器添加了框架代码。非常方便,但可以很容易地转移到代码片段中。
- 有协议 UITableViewDelegate 和 UITableViewDataSource 的声明。随和。无论如何,这些方法的实现必须遵循 UITableViewController 的每个子类。
- 协议中所有这些强制方法可能都有合理的默认实现。例如返回 0 为 numberOfSectionsInTableView: 或 nil 为 titleForHeaderInSection 或 44.0f 为 heightForRowAtIndexPath: (虽然不好的例子。完全不实现它可能更聪明)
因此,尽管有明显的东西,UITableViewController 是否有任何奇迹?