环境
xcode8.3,swift3,rxswift 3.6
前言
在做新项目并且对swift不是那么了解的时候,搭建好框架,有各种基类(baseView,baseTableView之类),但是在使用自定义xib视图的时候(或者从vc的xib里,例如有个tableview,拖好属性后改为LWBXXXXTableView,LWBXXXTableView继承LWBBaseTableView),总是会报错fatalError("init(coder:) has not been implemented")
原因
之前在创建baseTableView的时候是提供了纯代码的创建,创建自定义参数的init的时候,swift会强制要求你添加
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
如图:
因为这个问题,后面有跟xib有关的创建都会报无法完成error
解决方法
尝试用convenience这个参数修饰init,并且在baseTableView-》override func awakeFromNib() 配置跟纯代码的init的一些配置(达到二种创建控件的方式)
如图:
优化代码结构
接下来就愉快的食用啦,把从vc的xib里的tableView分离出来,单独处理视图(解藕),自定义的tablview里的代码层次也更加清晰明了
如图: