为目标c中的不同视图控制器提供通用功能

时间:2015-08-12 15:58:01

标签: ios objective-c iphone

我有很多viewcontrollers,需要有一些与导航相关的常用功能。

之前我制作了一个基类BaseViewController(扩展UIViewController),它具有所有常用功能(比如在viewDidLoad上执行某些任务等),而我的所有viewcontrollers扩展{ {1}}。

问题是,我的某些BaseViewController应该是viewcontroller的子类和UIViewController的某些子类,所以我不能使用上述方法。

一种方法是为两者编写基类并复制代码。有没有更好的方法没有重复代码。

1 个答案:

答案 0 :(得分:2)

虽然您可以通过使用委托或帮助程序对象解决这个问题,但我会假设不使用UITableViewController。它只是UIViewController之上的一个非常轻的子类,提供了一个表格视图,符合代表和&数据源协议,并添加一个或两个属性供选择&刷新。

虽然我通常不会建议重新构建框架已经为您完成的某些事情,但如果您只是保留从公共基类继承的所有内容并添加表,则可能(在您的情况下)使您的代码更容易理解查看其中一个子类。

如果您确实认为这是一种合理的方法,UITableViewController documentation概述会详细说明究竟是什么&实现这些行为的地方,因此模仿它的确切设置是微不足道的。

将表格视图添加到UIViewController

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) IBOutlet UITableView *tableView;
@end

在故事板中,从对象库中拖出“表格视图”并将其放在文档大纲中的视图控制器场景的“视图”顶部 - 这将替换根视图UITableView

然后把它连接起来:

  • ctrl -drag从视图控制器到表视图以挂接viewtableView个出口
  • ctrl -drag从表格视图到视图控制器,以设置delegatedataSource出口。

完成 - 不需要魔法。