6

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

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

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

[self.tableview reloadData];

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

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

4

2 回答 2

0

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

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

于 2014-01-29T19:32:15.927 回答
0

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

对象-c:

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

斯威夫特 5:

    UIView.performWithoutAnimation {
        self.tableView.reloadSections(NSIndexSet(index: indexPath.section), with: .none)
    }
于 2019-09-09T06:36:06.073 回答