如我们实现了一个类TGEmoticonInputV,这个类是UIView,同时对应的XIB(同名)也已经创建
以前我们要加载这个View的做法是
let v = Bundle.main.loadNibNamed("TGEmoticonInputV", owner: nil, options: nil)?.first as! TGEmoticonInputV
或者是
let nib = UINib(nibName: "TGEmoticonInputV", bundle: nil)
let v = nib.instantiate(withOwner: nil, options: nil)[0] as! TGEmoticonInputV
一般一个项目可能多达几十个XIB甚至上百个,那么这样的重复代码是否可以精简一下呢?答案是肯定的
首先把这个重复的动作抽到一个协议中去,并在协议的extension中提供默认实现
代码如下
//
// Nibloadable.swift
//
// Created by targetcloud on 2017/3/25.
// Copyright © 2017年 targetcloud. All righ