【问题标题】:When reloading a UITableView section, all sections flash重新加载 UITableView 部分时,所有部分都会闪烁
【发布时间】:2013-11-14 23:20:50
【问题描述】:

我正在使用UITableViewController,并且正在使用:

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:sectionNumber] withRowAnimation:UITableViewRowAnimationNone];

重新加载表格视图的单个部分(以动画方式插入新单元格)。问题是,每次调用时,所有部分及其单元格都会短暂闪烁白色。如果我使用,则不会发生这种情况

[self.tableview reloadData];

但无论我使用哪一行动画都会发生。

我知道我可以使用insertRowsAtIndexPaths:withRowAnimation:,但我目前有一个竞争条件不允许我使用它。我会在某个时候解决这个问题,但同时我想知道为什么在我重新加载单个部分时所有部分的单元格都会闪烁。另外,如果我可以关闭闪光灯,只为单元格的插入/删除设置动画,那就太理想了。

【问题讨论】:

  • 你能提供一些代码示例吗?

标签: ios objective-c uitableview


【解决方案1】:

我相信它会闪烁是因为当您重新加载特定部分时,它仍然需要重新计算所有可见部分的大小。因此闪光。如果不使用插入/删除(因为它知道表格只会改变一个),您将无法超越。

如果您只是在模拟器中尝试此操作,则在实际设备上加载时,闪光灯可能会消失或不太明显。

【讨论】:

    【解决方案2】:

    可能为时已晚。但它可以帮助某人。

    对象-c:

    [UIView performWithoutAnimation:^{
        [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
    }];
    

    斯威夫特 5:

        UIView.performWithoutAnimation {
            self.tableView.reloadSections(NSIndexSet(index: indexPath.section), with: .none)
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多