ios--小結系列六繼續-UITableViewCell

1、封裝字體

(1) 使用xib封裝一個view的步驟spa

   1) 新建一個xib文件描述一個view的內部結構(假設叫作TgCell.xib)

  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:方法

1) 添加全部須要顯示的子控件(不須要設置子控件的數據和frame,  子控件要添加到contentView中)
2) 進行子控件一次性的屬性設置(有些屬性只須要設置一次, 好比字體\固定的圖片)

(3) 提供2個模型

1) 數據模型: 存放文字數據\圖片數據
2) frame模型: 存放數據模型\全部子控件的frame\cell的高度

(4) cell擁有一個frame模型(不要直接擁有數據模型)

(5) 重寫frame模型屬性的setter方法: 在這個方法中設置子控件的顯示數據和frame

(6) frame模型數據的初始化已經採起懶加載的方式(每個cell對應的frame模型數據只加載一次)

相關文章
相關標籤/搜索