Swift Xib 加载 View 方式,Xib 加载多个Vi
2020-02-20 本文已影响0人
JasonFive
一、使用方法
本来直接使用 Bundle.main.loadNibNamed 方法就可以直接加载了,但是为了更方便简洁的方式加载使用以下方法
新建一个 NibLoadable 文件
/// 定义一个协议
protocol NibLoadable {
/// 具体实现写到 extension 中
}
/// 加载xib
extension NibLoadable where Self : UIView {
/* Xib 和 类名 同名
* lazy var headerView = HomeHeaderView.loadFromNib()
*
* Xib 中多个 View 视图
* lazy var sectionView = Level1SectionView.loadFromNib("Level1HeaderView",index: 1) */
/// 协议中不能定义class
static func loadFromNib(_ nibname:String? = nil,index:Int = 0) -> Self { // Self(大写)当前类对象
/// self(小写)当前对象
let loadName = nibname == nil ? "\(Self.self)" : nibname!
return Bundle.main.loadNibNamed(loadName, owner: nil, options: nil)![index] as! Self
}
}
使用
/// Xib 和 类名 同名
lazy var headerView = HomeHeaderView.loadFromNib()
/// Xib 和 类名 不同名
lazy var sectionView = HomeHeaderView.loadFromNib("sectionView")
/// Xib 中多个 View 视图
lazy var sectionView = Level1SectionView.loadFromNib("Level1HeaderView",index: 1)
二、Xib加载多个 View
先自定义一个UIView
/// section view
class Level1SectionView: UIView,NibLoadable {
override func awakeFromNib() {
super.awakeFromNib()
}
}
然后再在Xib中添加一个UIView
2.stp.jpg然后设置Class,然后再使用上面方法直接调用