1

我的班级有一个 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

基于此,我使特定单元格的隐藏图像可见。这很好用。但

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

因为 rowNum 将丢失。对此有什么帮助吗?

4

2 回答 2

0

发生这种情况是因为当单元格不可见时,cellForRowAtIndexPath:会再次调用该单元格,然后创建一个新单元格或使用现有单元格,具体取决于cellIndentifier

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

您可以按如下方式执行此操作:在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 ;

这肯定会工作!

于 2013-03-13T17:34:21.213 回答
0

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

  • 你改变点击单元格的显示
  • 您的问题是,当您滚动时,单元格的状态会丢失

为此,我可以提出以下建议:

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

为了给你一些背景信息,默认情况下,单元格在 iOS 中被重用以提高性能。因此,您返回的 UITableViewCell 对象会cellForRowAtIndexPath在其他行中不断重用。因此,当您滚动时,单元格上的设置状态将不会持续存在(同一对象将用于另一行)。这就是为什么您应该按照我的建议通过外部属性维护该状态信息

于 2013-03-13T19:17:43.907 回答