Xib套用Xib实现方式swfit
2020-09-10 本文已影响0人
蝴蝶之梦天使
swift
崩溃
引用
修改
写了那么多年iOS尽然一直不会“xib中套用xib”,是我遗忘了吗,还是老司机一直在混日子啊。记录下,保持一颗学习的心态。
疑惑
开开心心码好代码,觉得自己干了一件天大的事情,我把之前分散在3个页面的相同显示进行了统一。以后维护轻轻松松,快快乐乐的。666 没想到运行就崩溃。
/路径/RouteDetail/HXQTravelCostView.swift, line 38
2020-09-10 14:01:56.639258+0800 qiji[14481:202509] Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file /路径/HXQTravelCostView.swift, line 38
查看崩溃的代码
崩溃
添加的Label等组件都是nil,导致设置值的时候崩溃了。
错误使用
创建了view和相同名字的xib,并设置xib的custom class后。就在其他xib中进行直接引用。
引用
好简单的使用,暗自开心呢!没想到会崩溃。
正确使用
问了一圈度娘后,还是给出了答案。改造不麻烦,只是操作有点不一样。
修改
- 先选中1的view,然后删除右边对应的3位置的Custom Class中的Class。
- 然后选中2的File's Owner,设置右边3位置Custom Class中Class为自定义view的名称。
将view (修改2图中1位置)拉一条线到自定义view的class中,创建一个contentView(图中2位置)。做好这些后,就可以在contentView中轻松添加自己想要添加的控件了。HAPPY
最后实现加载contentView。
required init?(coder: NSCoder) {
super.init(coder: coder)
Bundle.main.loadNibNamed("HXQTravelCostView", owner: self, options: nil)
self.addSubview(self.contentView)
self.contentView.snp.makeConstraints { (make) in
make.edges.equalToSuperview()
}
}
添加contentView到self上,使用SnapKit第三方库进行添加约束。
Done 大功告成,轻松愉快的复用自定义xib了。
// END 每天进步一点点,踏踏实实做人