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