面向协议的方法
创建协议 NibLoadProtocol.swift
import Foundation
protocol NibLoadProtocol {
}
extension NibLoadProtocol where Self : UIView {
//在协议里面不允许定义class 只能定义static
static func loadFromNib(_ nibname: String? = nil) -> Self {//Self (大写) 当前类对象
//self(小写) 当前对象
let loadName = nibname == nil ? "\(self)" : nibname!
return Bundle.main.loadNibNamed(loadName, owner: nil, options: nil)?.first as! Self
}
}
遵守协议
import UIKit
class MyView: UIView, NibLoadProtocol {
}
使用
// xib文件与 类名同名 的情况
let demoView = DemoView.loadFromNib()
// xib文件与 类名不相同 的情况
let testV = TestView.loadFromNib("TestView0")
网友评论