1、封裝字體
(1) 使用xib封裝一個view的步驟spa
2) 新建一個自定義的類 (自定義類須要繼承自系統自帶的view, 繼承自哪一個類, 取決於xib根對象的Class)代理
3) 新建類的類名最好跟xib的文件名保持一致(好比類名就叫作TgCell)對象
4) 將xib中的控件 和 自定義類的.m文件 進行連線繼承
5) 提供一個類方法返回一個建立好的自定義view(屏蔽從xib加載的過程)圖片
6) 提供一個模型屬性讓外界傳遞模型數據it
7) 重寫模型屬性的setter方法,在這裏將模型數據展現到對應的子控件上面io
2、Delegate方法
(1) Delegate的使用場合im
1) 對象A內部發生了一些事情,想通知對象B
2) 對象B想監聽對象A內部發生了什麼事情
3) 對象A想在本身的方法內部調用對象B的某個方法,而且對象A不能對對象B有耦合依賴
4) 對象A想傳遞數據給對象B
5) ……
以上狀況,結果都同樣:對象B是對象A的代理(delegate)
(2) 使用Delegate的步驟
1) 先搞清楚誰是誰的代理(delegate)
2) 定義代理協議,協議名稱的命名規範:控件類名 + Delegate
3) 定義代理方法
代理方法通常都定義爲@optional
代理方法名都以控件名開頭
代理方法至少有1個參數,將控件自己傳遞出去
4) 設置代理(delegate)對象 (好比myView.delegate = xxxx;)
代理對象遵照協議
代理對象實現協議裏面該實現的方法
(5) 在恰當的時刻調用代理對象(delegate)的代理方法,通知代理髮生了什麼事情
(在調用以前判斷代理是否實現了該代理方法)
3、經過代碼自定義cell(cell的高度不一致)
(1) 新建一個繼承自UITableViewCell的類
(2) 重寫initWithStyle:reuseIdentifier:方法
(3) 提供2個模型
(4) cell擁有一個frame模型(不要直接擁有數據模型)
(5) 重寫frame模型屬性的setter方法: 在這個方法中設置子控件的顯示數據和frame
(6) frame模型數據的初始化已經採起懶加載的方式(每個cell對應的frame模型數據只加載一次)