Swift項(xiàng)目實(shí)戰(zhàn) Protocol Extension

最近的項(xiàng)目使用到 協(xié)議的擴(kuò)展,swift真的是將protocol這種語法發(fā)揚(yáng)的更加深入和徹底。下面就來說一下自己在項(xiàng)目中的應(yīng)用吧!

come on !!!

上車,坐穩(wěn)了!??

//往往大家自定義View時(shí)候 經(jīng)常是這種方式載入的
  let nib = UINib(nibName: "ChatContentView", bundle: nil)
  tableView.register(nib, forCellReuseIdentifier: ChatContentView)

下面介紹這種方式:

//聲明一個(gè)協(xié)議
protocol NibLoadable {

}
//添加的協(xié)議的擴(kuò)展,     限制只有UIview及子類可以遵循這個(gè)協(xié)議喔!
extension NibLoadable where Self : UIView {
    static func loadFromNib(_ nibname : String? = nil) -> Self {
        let loadName = nibname == nil ? "\(self)" : nibname!
        return Bundle.main.loadNibNamed(loadName, owner: nil, options: nil)?.first as! Self
    }
}
//讓 自定義的view 遵循  NibLoadable 協(xié)議
class ChatContentView: UIView, NibLoadable {
  
    func insertMsg(_ message : NSAttributedString) {
        messages.append(message)
        tableView.reloadData()
        let indexPath = IndexPath(row: messages.count - 1, section: 0)
        tableView.scrollToRow(at: indexPath, at: .bottom, animated: true)
    }
}

<想必大家已經(jīng)明白怎么用了吧??? 坐穩(wěn)了! 下方高能~~~~>

使用方式:

fileprivate lazy var chatContentView : ChatContentView = ChatContentView.loadFromNib()

完了.... 就是這么簡單....??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,828評論 4 61
  • 印象中,姥姥就是那樣,滿臉皺紋,有一些口眼歪斜,一雙三寸金蓮顫顫巍巍的挪動(dòng)著步子。大多數(shù)時(shí)間,她都坐在窗前的床沿上...
    燃燒的向日葵閱讀 238評論 2 2
  • 看過這一期的朗讀者,她帶領(lǐng)我到另一個(gè)我觸不到世界,原來還有這么美好的文字,同時(shí)也讓我跟著流淚.,有思念的、心酸的、...
    芬菲草1閱讀 180評論 0 0
  • 余輝落幕照桑榆, 清風(fēng)醉意百花徐; 桃花十里落寞雨, 春歸炸暖入山居。
    月夜秋荷閱讀 289評論 0 2

友情鏈接更多精彩內(nèi)容