我有一张带有消耗品部分的桌子。有点像 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 个标题从表格视图的大约中间下降。任何想法如何避免这种情况?
注意:这只发生在表格滚动到谷底之前。之后,一切正常。感谢任何建议。