cell 重用

tableView表格中的cell有重用机制,这是一个很好的东西,可以避免开辟很多的空间内存。但是有时候我们不想让它重用cell,,可以用以下的代码解决。

将这个代码放在:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ }这个函数中执行就好了。

 

 

  • //清楚cell的缓存  
  • NSArray *subviews = [[NSArray alloc] initWithArray:cell.contentView.subviews];  
  • for (UIView *subview in subviews) {  
  •     [subview removeFromSuperview];  
  • }  

例如:

  (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  

  • {  
  •       
  •     static NSString *CellIdentifier = @"Cell";  
  •       
  •     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  •       
  •     if (cell == nil) {  
  •         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  
  •                                        reuseIdentifier: CellIdentifier];  
  •     }else{  
  •         //cell中本来就有一个subview,如果是重用cell,则把cell中自己添加的subview清除掉,避免出现重叠问题  
  •         //         [[cell.subviews objectAtIndex:1] removeFromSuperview];  
  •         for (UIView *subView in cell.contentView.subviews)  
  •         {  
  •             [subView removeFromSuperview];  
  •         }  
  •     }  
  •       
  •     if (tableView == couponTableView) {  
  •         //进入优惠券列表  
  •         cell.textLabel.text = [NSString stringWithFormat:@"%@", [couponArry objectAtIndex:indexPath.row]];  
  •     }  
  •     else{  
  •         //进入团购列表  
  •         cell.textLabel.text = [NSString stringWithFormat:@"%@", [groupbuyArry objectAtIndex:indexPath.row]];  
  •     }  
  •       
  •     return cell;  
  • }  
posted @ 2016-01-27 08:41  史前巨兽  阅读(154)  评论(0编辑  收藏  举报