reloadRowsAtIndexPaths

reloadRowsAtIndexPaths

我有一个计时器,该计时器调用下面的代码以在分组的UITableView的第二部分中重新加载单元格。除非我向上滚动屏幕,否则第一部分/单元格看不到,它的工作原理非常好。一旦它“弹回”到正确的位置,我看到应该在第0部分显示的文本已经在第1部分出现了,反之亦然。

  [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationNone];


reloadRowsAtIndexPaths或cellForRowAtIndex路径是否从完整(可见或不可见)单元格的顶部开始工作,还是仅从屏幕上可见的单元格开始工作?换句话说,第0部分实际上是否根据在屏幕上可见而改变?

还有什么会导致cellForRowAtIndexPath将错误的数据加载到单元格中?

最佳答案

好的,我在您的项目中扮演了一个角色,这是我的建议:

在将按钮添加到单元格时,请记住在不想使用它时将其删除(刷新单元格时,基本上是创建一个新单元格,并存储第二个单元格以供重复使用,因此,如果向下滚动并然后向上,您将重复使用该单元格作为名称的单元格)。

  if (cell == nil)
  {
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
  }
 [[cell viewWithTag:2] removeFromSuperview];


为此,必须将相应的标签设置为按钮:

  myButton1.tag = 2;
  [cell addSubview:myButton1];


而且,直接将按钮添加到单元格中,而不是添加到contentView中(这仅对我有用,我不确定为什么)。

编辑:我上载了您项目的固定版本download it

关于objective-c - UITableView reloadRowsAtIndexPaths和cellForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11270889/

10-10 07:08