UITableView可扩展部分,标题从表格中间删除

时间:2013-03-11 19:11:49

标签: objective-c uitableview animation sections expandable

我有一张带有消耗部分的桌子。有点像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个标题。任何想法如何避免这种情况?

注意:这仅在表滚动之前发生。在那之后,一切都很好。感谢任何建议。

0 个答案:

没有答案