tableview總是忘了一些事

tableView.separatorStyle=UITableViewCellSeparatorStyleNone;cell.accessoryType=?UITableViewCellAccessoryDisclosureIndicator;//箭頭

1.不使用UITableView的重用機(jī)制,實現(xiàn)代碼如下,這種方法要創(chuàng)建好多cell嚴(yán)重消耗內(nèi)存:

UITableViewCell*cell = [tableViewcellForRowAtIndexPath:indexPath];

2.使用UITableView的重用機(jī)制,但是給每個cell的id不一樣,但是也要創(chuàng)建好多cell:

UITableViewCell*cell = [tableViewdequeueReusableCellWithIdentifier:[NSStringstringWithFormat:@"cellId%li",indexPath.row]];

3.使用UITableView的重用機(jī)制,但是在每次cell不為空的情況下移除子視圖,代碼如下(這種情況適合用了UITableView的重用機(jī)制,出現(xiàn)視圖或是文字重疊,就可用這種方法,如果使用錯誤會造成已經(jīng)創(chuàng)建的視圖被移除):

static NSString*cellId =@"cellId";

UITableViewCell*cell = [tableViewdequeueReusableCellWithIdentifier:cellId];

if(!cell) {

cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellId];

cell.selectionStyle=UITableViewCellSelectionStyleNone;

}else{

// 判斷cell.contentView如果有子視圖則移除

while([cell.contentView.subviewslastObject] !=nil) {

[[cell.contentView.subviewslastObject]removeFromSuperview];

}

/**

//?這種方法也可以,這是OC提供的枚舉,二者選其一就好,實現(xiàn)效果是一樣的

[cell.contentView.subviewsenumerateObjectsUsingBlock:^(__kindofUIView*_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {

UIView*view = (UIView*)obj;

[viewremoveFromSuperview];

}];

*/

}


之前被問到如果tableview中每個高度都是一樣的但是不想每次都去執(zhí)行一次賦值高度的方法。如果是執(zhí)行row for height

方法那么會執(zhí)行很多次,那么 tableView.rowHeight =

88;(高度變化的話為了減少負(fù)擔(dān)將加載出來的值放在數(shù)組中而不用每次去計算。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容