tableview总是忘了一些事
tableView.separatorStyle=UITableViewCellSeparatorStyleNone;cell.accessoryType= UITableViewCellAccessoryDisclosureIndicator;//箭头
1.不使用UITableView的重用机制,实现代码如下,这种方法要创建好多cell严重消耗内存:
UITableViewCell*cell = [tableViewcellForRowAtIndexPath:indexPath];
2.使用UITableView的重用机制,但是给每个cell的id不一样,但是也要创建好多cell:
UITableViewCell*cell = [tableViewdequeueReusableCellWithIdentifier:[NSStringstringWithFormat:@"cellId%li",indexPath.row]];
3.使用UITableView的重用机制,但是在每次cell不为空的情况下移除子视图,代码如下(这种情况适合用了UITableView的重用机制,出现视图或是文字重叠,就可用这种方法,如果使用错误会造成已经创建的视图被移除):
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提供的枚举,二者选其一就好,实现效果是一样的
[cell.contentView.subviewsenumerateObjectsUsingBlock:^(__kindofUIView*_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {
UIView*view = (UIView*)obj;
[viewremoveFromSuperview];
}];
*/
}
之前被问到如果tableview中每个高度都是一样的但是不想每次都去执行一次赋值高度的方法。如果是执行row for height
方法那么会执行很多次,那么 tableView.rowHeight =
88;(高度变化的话为了减少负担将加载出来的值放在数组中而不用每次去计算。)