首页 > 关于iOS多继承的问题

关于iOS多继承的问题

如题, 在项目中,有一个基类BaseViewController 继承于系统的UIViewController,然后我的controller都继承于BaseViewController, 但是我项目中还有很多UITableViewController,怎么让TableViewController也拥有BaseViewController中的方法..


建一个BaseTableViewController继承与BaseViewController.在BaseTableViewController中声明一个属性UITableView,配好tableView的基本属性了就行了。然后你用UITableViewController时,就再建一个VC继承与BaseTableViewController就行了。


IOS不支持多继承,但是支持多个代理,楼主可以在BaseViewController设置一个Delegate,然后UITableViewController去引用好了。


用类别的方式,给UIViewController加方法
如果用重构,想了想比较麻烦,需要抽提一个中介类,然后BaseViewController和BaseTableViewController需要一个中介对象进行调用。麻烦之处在于要把方法和成员提出去,并且原来代码里所有的self,替换成self.xxx以访问原来的self指针。


UIViewController实现了UITableViewDataSourceUITableViewDelegate协议以后就和UITableViewController没什么区别。

让你自己的VC继承BaseViewController,实现这两个协议,再把你的UITableViewdelegatedataSource都设为这个VC就行了。


建议可以不用UITableViewController:)实际工程中,感觉没有什么优势……

一般的做法是给UIViewController里面 addSubView 加一个UITableViewdelegatedataSource设成self就行了。

你可以试试直接把你的UITableViewController改成BaseNameController,之前写好的代码都不用动~


利用Runtime方法在UIViewController上添加需要的属性和方法,重写方法用保存后替换的方式实现。

但要考虑到是否有不能继承这些修改的类,比如UINavigationController。

【热门文章】
【热门文章】