避免UITableView滚动时有重影

本文介绍了解决UITableView滚动时cell重叠显示的两种方法:静态重用和清除原有控件重新构建,同时提供了取消选中状态的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们滚动UITableView时,有时cell会重合起来,很难看,下面是两种解决方法:

方法1:

  1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  2.     static NSString *CellIdentifier = @"ToneBoxMusicStyleViewCell";  
  3.       
  4.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  5.       
  6.     if (cell == nil) {  
  7.         NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"ToneBoxMusicStyleViewCell" owner:self options:nil];  
  8.           
  9.         if ([nib count] > 0) {  
  10.             cell = self.styleViewCell;  
  11.         }  
  12.     }else{  
  13.         for (UIView *subView in cell.contentView.subviews)  
  14.         {  
  15.             [subView removeFromSuperview];  
  16.         }  
  17.     }  
  18.     return cell;  
  19. }  


方法二:移除原先所有控件

  1. //构建tableView  
  2. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  3. {  
  4.     UITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:@"TodoViewController"];  
  5.     cell.tag = 1;  
  6.     if(!cell){  
  7.         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"TodoViewController"]autorelease];          
  8.           
  9.     }else{  
  10.         while ([cell.contentView.subviews lastObject] != nil) {  
  11.             [(UIView *)[cell.contentView.subviews lastObject] removeFromSuperview];  
  12.         }  
  13.     } 


注:如果要在选中某行后马上去掉选中状态,使用如下方法:

    // 取消选中状态
    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值