gpt4 book ai didi

objective-c - UITableView reloadRowsAtIndexPaths 和 cellForRowAtIndexPath

转载 作者:行者123 更新时间:2023-11-29 04:34:11 25 4
gpt4 key购买 nike

我有一个计时器,它调用下面的代码来重新加载分组 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com