2011-07-19 10 views
0

私はカスタムセクションヘッダービューを持つ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:最終的な位置(位置が優れている)私は正しく描画されている最後のセクションヘッダを参照してくださいが、その後消えることができます(アニメーション、それ以上のシンプル無地白)への移行

+0

テーブルビューをオープンセクションにスクロールしてみましょう –

+0

良いアイデア - より使いやすくなりますが、問題は解決しません。私は、カスタムセクションヘッダービューのlayoutSubviewsメソッドで、最後に更新されたサイズが0,0,0,0であることを知ったと思います。どのようにすることができますか? – gamma

答えて

0

どのようなREAL問題は - 私はTableViewの重い部分を書き換えたと私は学んだことだと思う:

あなたがUITableViewCellが必要な場合は、UITableViewCellを使用してください。セクションヘッダーのUIViewが必要な場合は、セクションヘッダーのUIViewを使用します。

セクションヘッダーをTableViewCellと混合して、そこにあるコードを再利用しました。カテゴリは特定のクラスを1つしか拡張できないため、委譲/プロバイダメソッド/オブジェクトを使用して特定のコードを再利用する必要がありました。より多くのサブクラスを必要とするかもしれませんが、実際にははるかに安全です。

さらに、ある位置への自動スクロールは、現在では非常に良く機能し、描画アーチファクトはなくなりました。

+0

1つを除く:上部のセルが開いていて、下部にあるセルを切り替えると、トグルされたセクションのヘッダービューが上から下に移動します(0,0から始まります)。これは私が想定しているフレームの更新によるものです。しかし、どのように私は状態を保存せずにこれを停止することができますか? – gamma

関連する問題