【发布时间】:2012-07-23 10:00:48
【问题描述】:
我想为我的项目创建一个BaseViewController 类(继承自UIViewController),它可以作为我项目中其他视图控制器的基类。这是为了添加一些东西,例如一个常见的进度 HUD、一个刷新按钮和网络更新机制,也许是一个可以由每个子类自定义文本的错误对话框等。
至关重要的是,我希望能够将此功能添加到 UIViewController 子类和 UITableViewController 子类中,但我无法将自己插入到 UITableViewController 类层次结构中,因此实际上我需要一个 BaseUIViewController和BaseUITableViewController,但如果我这样做,我必须实施两次更改并保持同步。
为BaseViewController 子类和BaseTableViewController 子类都可以访问的公共代码提供一个单一位置的最佳方法是什么?我只希望我的代码中有一个地方可以用来处理常见任务。
1) 我考虑过使用associative references 的类别,但这里的问题是我需要自定义实现 ViewController 生命周期类,例如 viewDidLoad:,这不是一个好主意。
2) 我可以完全跳过 UITableViewController,并从 BaseViewController 构建我自己的 BaseTableViewController,自己实现 tableView delegate 和 datasource 方法,但我不太想跳过苹果的控制器在这里实现。
3) 我可以有一个从UIViewController 继承的BaseViewController,从UITableViewController 继承的BaseTableViewController,只需将自定义方法调用放入第三个文件ViewControllerBaseMethods 即可从两个“基本”文件中调用.可能仍然存在重复的属性,但至少方法代码会在一个地方。
对于这类事情还有其他好的方法吗?
【问题讨论】:
标签: objective-c ios uiviewcontroller