私はカスタムセクションヘッダービューを持つUITableViewのセクションを持つセットアップを持っています。一度に表示できる行は1つのセクションに限られます。最後のセクションヘッダービューは、insertRowForIndexpathとdeleteRowForIndexpathの後に描画されません。
は、他のセル行は、私は基本的に次の関数を使用する表示効果を作成するには:
[self.tableView beginUpdates];
if (sectionHeaderInsert >= 0 && sectionHeaderInsert <= numberOfSectionsInTableView) {
[ticketReastepsScreenView.tableView insertRowsAtIndexPaths:indexPathsInsert withRowAnimation:UITableViewRowAnimationFade];
}
[self updateTmpSelectedNumberToCurrent];
if (sectionHeaderRemove >= 0 && sectionHeaderRemove <= numberOfSectionsInTableView) {
[ticketReastepsScreenView.tableView deleteRowsAtIndexPaths:indexPathsRemove withRowAnimation:UITableViewRowAnimationFade];
}
[self.tableView endUpdates];
さて最後に新しいセクションは、「開く」と古いものがpropperly「閉じた」ということで何が起こりますか、しかし、もし私が画面に収まるセクションがもっとあれば、(部分的に)表示されている最後のセクションは完全には再描画されません - 完全に白で覆われています。
すべてのセクションには新しい高さが求められます。新しいビュー(配列に含まれています)を求めています。次に、ビューに[view setNeedsDisplay]を要求します。
最後のセクションのヘッダーが消えるようにスクロールしてから再びスクロールすると、もう一度表示され、現在開いているセクションを再び変更するまで表示されます。
UPD:この面白い動作は、insertRowとdeleteRowを一緒に実行した場合にのみ表示されます。私は1つのセクション(deleteRow)を閉じるだけで、セクションでは、新しいアクション(insertRow)をタッチアクションで開くことができ、その動作は異なります。
私はまた、2つのアクションの間にendUpdatesとbeginUpdatesを持っているようにしました。肯定的な結果はありません。
UPD2:最終的な位置(位置が優れている)私は正しく描画されている最後のセクションヘッダを参照してくださいが、その後消えることができます(アニメーション、それ以上のシンプル無地白)への移行
テーブルビューをオープンセクションにスクロールしてみましょう –
良いアイデア - より使いやすくなりますが、問題は解決しません。私は、カスタムセクションヘッダービューのlayoutSubviewsメソッドで、最後に更新されたサイズが0,0,0,0であることを知ったと思います。どのようにすることができますか? – gamma