【发布时间】:2013-06-25 19:20:33
【问题描述】:
有时我想继承 UIViewController 以进行一些应用范围的自定义。例如。所有视图控制器都应该在 viewDidLoad 或 viewWillAppear 期间执行的操作。
我自然地继承 UIViewController 并从那里开始,所有视图控制器都继承自那里。但是一些控制器运行表。并且有为此目的而设计的 UITableViewController。
所以我也继承了 UITableViewController 并在那里做同样的事情。用 OOP 术语来说,这似乎不是最聪明的事情。并且没有多重继承等。
并且作为 UITableViewController 继承自 UIViewController ...
现在我问自己为什么不创建自己的表格视图控制器,它继承自我自己的视图控制器子类并添加所有表格内容。但什么是“所有表格内容”?
- xcode 为每个新的表视图控制器添加了框架代码。非常方便,但可以很容易地转移到代码 sn-ps。
- 有协议 UITableViewDelegate 和 UITableViewDataSource 的声明。随和。无论如何,这些方法的实现必须遵循 UITableViewController 的每个子类。
- 协议中所有这些强制方法可能都有合理的默认实现。例如为 numberOfSectionsInTableView 返回 0:或为 titleForHeaderInSection 返回 nil 或为 heightForRowAtIndexPath 返回 44.0f:(虽然是个坏例子。完全不实现它可能更聪明)
那么,尽管有明显的东西,UITableViewController 有什么奇迹吗?
【问题讨论】:
-
感谢所有回答的人。这对特定的架构决策有很大帮助。
标签: ios cocoa-touch uiviewcontroller uitableview