×

使用协议方法加载XIB

96
BYQiu
2017.05.05 14:21* 字数 19

面向协议的方法

创建协议 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")

Swift
Web note ad 1