我正在为我的UITableView进行延迟加载,因此我尝试在图像更新时重新加载各行。然而,我遇到了一个奇怪的问题。
当我打电话时,
[self.bubbleTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationNone];
OR
[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
当我特别说“无动画”时,它仍然会动画,动画是图像占据整个单元格并迅速缩小到正常大小。此外,如果我将其更改为任何其他动画,则无论采用何种设置,它都会执行相同的动画。
如果我评论其中任何一个并且只是使用reloadData它工作正常,但我不想做reloadd重新更新不需要更新的单元格的性能原因。
谢谢!
答案 0 :(得分:42)
[UIView setAnimationsEnabled:NO];
[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
[UIView setAnimationsEnabled:YES];
它对我有用。
UPD。与@Şafak-gezer的块相同
[UIView performWithoutAnimation:^{
[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
}];
<强> SWIFT 强>
UIView.performWithoutAnimation {
self.bubbleTableView.reloadSections(NSIndexSet(index: indexPath.section), withRowAnimation: UITableViewRowAnimation.None)
}
答案 1 :(得分:8)
以下方法适用于我:(适用于iOS 7及更高版本)
[UIView performWithoutAnimation:^{
[tableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
}];
答案 2 :(得分:0)
使用cellForRowAtIndexPath:
仅更新您感兴趣的单元格。
答案 3 :(得分:-3)
我在iOS模拟器上发现了这件事。经过一些重新加载后,它正常工作,没有动画。可能只是模拟器中的一个错误。