自定義一個(gè)Cell
當(dāng)我們要顯示復(fù)雜數(shù)據(jù)的時(shí)候,例如要做一個(gè)扣扣聊天界面,或是新聞列表,系統(tǒng)的行已經(jīng)不能滿足我們的要求,這個(gè)時(shí)候我們可以通過自定義這個(gè)行,讓他顯示更多復(fù)雜結(jié)構(gòu)的樣式。
自定義cell就是創(chuàng)建一個(gè)UITabelViewCell的子類,把cell上的控件創(chuàng)建都封裝在子類中,簡(jiǎn)化UIViewController中的代碼然后把子視圖控件添加到cell的contentView上
cell中的控件如何顯示model中的信息
cell中聲明一個(gè)model類型的屬性,viewController中獲取到Model對(duì)象后賦值給cell的Model屬性
cell中重寫Model的setter方法,把Model對(duì)象中的內(nèi)容重新賦值給各個(gè)控件
M和V不直接進(jìn)行通信,C負(fù)責(zé)M和V之間進(jìn)行通信
多種類型的CELL混合
開發(fā)中常見多種類型的cell混合在一個(gè)tableView中使用,通常每種類型的cell有不同的布局樣式
通常我們會(huì)在tabelView:cellForRowAtIndexPath:方法中根據(jù)不同的Model來決定使用什么類型的cell
每種類型的cell要定義不同的重用標(biāo)識(shí)符,cell重用的時(shí)候會(huì)根據(jù)重用標(biāo)識(shí)符從重用隊(duì)列中取用哪種類型的cell
例如我們定義一個(gè)ComposeCel類型的標(biāo)識(shí)符和ReceivedCell類型的標(biāo)識(shí)符

然后通過判斷并根據(jù)不同的標(biāo)識(shí)符從重用隊(duì)列中取用不同類型的表格

cell自適應(yīng)高度
之前我們使用的cell一直都是同樣的高度,或者某行固定高度,但在實(shí)際開發(fā)中,經(jīng)常要讓cell根據(jù)Model中文本的長(zhǎng)短動(dòng)態(tài)的更改高度。
首先獲取文本的高度

計(jì)算文本高度是所用的字體要和label顯示時(shí)所用的字體一致
label的寬度要和計(jì)算時(shí)使用的限定寬度一致,這樣才能保證文本顯示在label中時(shí),label高度恰巧夠
tableView:heightForRowAtIndexPath:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注