我有一张带有消耗部分的桌子。有点像Windows上树中的“加号”。当用户点击某个部分上的加号按钮时,该部分会消耗/折叠,显示或隐藏其中的单元格。这是viewForHeaderInSection:
// Open/close on tap block
[headerView setOpenOnTapBlock:^(BOOL open) {
NSInteger numberOfRowsToChange = [changedRows count];
NSMutableArray *indexPathsToChange = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < numberOfRowsToChange; i++) {
[indexPathsToChange addObject:[NSIndexPath indexPathForRow:i inSection:section]];
}
if (indexPathsToChange.count) {
[self.redSection[section] setOpen:open];
[self.tableView beginUpdates];
if (open) {
[self.tableView insertRowsAtIndexPaths:indexPathsToChange
withRowAnimation:UITableViewRowAnimationMiddle];
} else {
[self.tableView deleteRowsAtIndexPaths:indexPathsToChange
withRowAnimation:UITableViewRowAnimationMiddle];
}
[self.tableView endUpdates];
}
}];
现在,除了1个小细节外,所有消费 - 折叠工作都很好。
考虑一个加载了最初扩展的所有部分的表。如果表的内容位置是第3个(例如)部分标题在底部,并且点击“折叠”,则第4个标题现在将在第3个标题的正下方绘制。然而它确实发生了一些奇怪的动画 - 从表格视图的大约中间添加了第4个标题。任何想法如何避免这种情况?
注意:这仅在表滚动之前发生。在那之后,一切都很好。感谢任何建议。