重新加载UITableView部分时,所有部分都会闪烁

时间:2013-11-14 23:20:50

标签: ios objective-c uitableview

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

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

重新加载tableview的单个部分(为新单元格的插入设置动画)。问题是,每次进行此调用时,所有部分及其单元格都会短暂闪烁。如果我使用

,则不会发生这种情况
[self.tableview reloadData];

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

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

2 个答案:

答案 0 :(得分:0)

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

如果你只是在模拟器中尝试这个,那么当加载到实际设备上时,闪存可能会消失或不太明显。

答案 1 :(得分:0)

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

Obj-c:

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

快捷键5:

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