UITabelView 進階(自訂Cell),uitabelviewcell
自訂一個Cell
當我們要顯示複雜資料的時候,例如要做一個扣扣聊天介面,或是新聞列表,系統的行已經不能滿足我們的要求,這個時候我們可以通過自訂這個行,讓他顯示更多複雜結構的樣式。
自訂cell就是建立一個UITabelViewCell的子類,把cell上的控制項建立都封裝在子類中,簡化UIViewController中的代碼然後把子視圖控制項添加到cell的contentView上
cell中的控制項如何顯示model中的資訊
cell中聲明一個model類型的屬性,viewController中擷取到Model對象後賦值給cell的Model屬性
cell中重寫Model的setter方法,把Model對象中的內容重新賦值給各個控制項
M和V不直接進行通訊,C負責M和V之間進行通訊
多種類型的CELL混合
開發中常見多種類型的cell混合在一個tableView中使用,通常每種類型的cell有不同的配置樣式
通常我們會在tabelView:cellForRowAtIndexPath:方法中根據不同的Model來決定使用什麼類型的cell
每種類型的cell要定義不同的重用標識符,cell重用的時候會根據重用標識符從重用隊列中取用哪種類型的cell
例如我們定義一個ComposeCel類型的標識符和ReceivedCell類型的標識符
然後通過判斷並根據不同的標識符從重用隊列中取用不同類型的表格
cell自適應高度
之前我們使用的cell一直都是同樣的高度,或者某行固定高度,但在實際開發中,經常要讓cell根據Model中文本的長短動態更改高度。
首先擷取文本的高度
計算文本高度是所用的字型要和label顯示時所用的字型一致
label的寬度要和計算時使用的限定寬度一致,這樣才能保證文本顯示在label中時,label高度恰巧夠
tableView:heightForRowAtIndexPath: