当tableview手动滚动时,单元格图像消失

时间:2012-10-01 10:16:26

标签: objective-c xcode uitableview

我的班级有一个tableview。根据选定的索引,我正在重新加载我的TableView行

-(void)viewWillAppear:(BOOL)animated{

   [super viewWillAppear:YES];

    [self.stopsTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath  

   indexPathForRow:rowNum inSection:0]] withRowAnimation:UITableViewRowAnimationFade];


}

rowNum将设置为:rowNum = indexPath.row

基于此,我将特定单元格的隐藏图像显示出来。这很好用。但是

当我手动滚动我的tableview时(即当我的单元格离开视图或可见性时),我的单元格隐藏图像因为值

而消失

对于rowNum将丢失。对此有何帮助?

2 个答案:

答案 0 :(得分:0)

发生这种情况是因为当单元格失去可见性时,再次调用cellForRowAtIndexPath:,并且根据cellIndentifier

创建新单元格或使用现有单元格

因此,如果您使用较少数量的单元格您可以为不同的单元格分配不同的cellIdentifier,然后即使单元格不可见,它仍将保持相同的单元格

您可以按照以下方式执行此操作:cellForRowAtIndexPath:

 NSString *str = [NSString StringWithFormat:@"cell%d",indexpath.row];

 cell = [UITableView dequeReusableCellWithCellIdentifier:str];

 if(cell == nil)
 {
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:str];
 }

 return cell ;

这肯定会奏效!!!

答案 1 :(得分:0)

虽然我不确定你为什么在viewWillAppear中有这样的代码,但这就是我的理解

  • 您可以更改已点击单元格的显示
  • 问题是,当您滚动时,单元格的状态将丢失

为此我可以建议以下内容:

在视图控制器中,声明存储每个单元格状态的属性(例如NSMutableArray)。在cellForRowAtIndexPath方法中,使用正确的状态初始化您的单元格

为了向您提供一些背景信息,默认情况下会在iOS中重复使用单元格以提高性能。因此,从cellForRowAtIndexPath返回的UITableViewCell对象不断在其他行中重用。因此,滚动时,单元格上的设置状态将不会保留(同一个对象将用于另一行)。这就是为什么你应该像我建议的那样通过外部财产维护状态信息