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ì)算。)