自定义xib视图在swift愉快的继承基类使用

环境

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视图在swift愉快的继承基类使用_第1张图片

因为这个问题,后面有跟xib有关的创建都会报无法完成error

解决方法

尝试用convenience这个参数修饰init,并且在baseTableView-》override func awakeFromNib() 配置跟纯代码的init的一些配置(达到二种创建控件的方式)

如图:

自定义xib视图在swift愉快的继承基类使用_第2张图片

优化代码结构

接下来就愉快的食用啦,把从vc的xib里的tableView分离出来,单独处理视图(解藕),自定义的tablview里的代码层次也更加清晰明了

如图:

自定义xib视图在swift愉快的继承基类使用_第3张图片
自定义xib视图在swift愉快的继承基类使用_第4张图片
自定义xib视图在swift愉快的继承基类使用_第5张图片

你可能感兴趣的:(自定义xib视图在swift愉快的继承基类使用)