XIB 复用自定义视图
XIB
自定义视图
复用
在应用迭代中经常需要修改界面,为了提高效率,我想着利用为界面而生的XIB,Storyboard工具,对于复用视图,最好作为一个独立视图,选择XIB手写混合会更合适。一般情况下我们直接通过loadNibNamed:owner:options:
代码调用复用XIB_Reuse,把得到视图再手写代码布局到指定XIB视图上,那么可不可以把XIB_Reuse嵌入XIB里面,感觉更COOL呢!答案是可以的:】
代码呈上 下载
XIB嵌套XIB可行性
如果光是改一下嵌入视图的类名为XIB_Reuse定义好的视图类名,是达不到复用的效果了,因为苹果并没有提供这么便捷的方式,主要问题在于加载XIB时并不会主动加载其中XIB_Reuse文件。
XIB 加载代码流程(仅iOS平台)[参照]
- 加载nib(xib build之后文件)文件内容全部原始数据至内存,包括其中所引用的图像资源,此步骤对数据不做解档
- 对nib原始数据中所有符合NSCoding协议的对象发送
initWithCoder:
消息实例化,初始化,这里包括所有UIView,UIViewController子类,对于非协议对象则发送init
消息实例化 - 使用
setValue:forKey:
建立outlets连接,addTarget:action:forControlEvents:
建立actions操作 - 发送
awakeFromNib
消息 - 就等待显示了:】
可见XIB与手写配合最开始切入点就是initWithCoder:
在此方法描述:
Returns an object initialized from data in a given unarchiver. (required)
You must return self from initWithCoder:. If you have an advanced need that requires substituting a different object after decoding, you can do so in awakeAfterUsingCoder:.
这里提示我们:
- 此方法应该返回self本身
- 如果有更高需要替换