tableview總是忘了一些事

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

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

UITableViewCell*cell = [tableViewcellForRowAtIndexPath:indexPath];

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

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

3.使用UITableView的重用機(jī)制,但是在每次cell不為空的情況下移除子視圖,代碼如下(這種情況適合用了UITableView的重用機(jī)制,出現(xiàn)視圖或是文字重疊,就可用這種方法,如果使用錯(cuò)誤會(huì)造成已經(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提供的枚舉,二者選其一就好,實(shí)現(xiàn)效果是一樣的

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

UIView*view = (UIView*)obj;

[viewremoveFromSuperview];

}];

*/

}


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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容