1

我有一张带有消耗品部分的桌子。有点像 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 个标题从表格视图的大约中间下降。任何想法如何避免这种情况?

注意:这只发生在表格滚动到谷底之前。之后,一切正常。感谢任何建议。

4

0 回答 0