消耗品のセクションがあるテーブルがあります。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番目のヘッダーが追加されています。これを回避する方法はありますか?
注:これは、テーブルがトラフにスクロールされる前にのみ発生します。その後、すべてがうまくいきます。提案に感謝します。