2012-07-30 7 views
6

私はスタティックセルでUITableViewを使用します。 reloadDataを使用すると、すべてがOKです。UITableView reloadRowsAtIndexPathsは行を非表示にします

私が試してみると、reloadRowsAtIndexPathsは行を非表示にします。 tableViewを(セルが更新されたとき)上下にドラッグすると、行が表示されます。

答えて

8

私は同じ問題を抱えていましたが、バグのようです。アニメーションオプションをUITableViewRowAnimationNoneに設定すると、いくつか実験したところ問題は発生しません。そのオプションをUITableViewRowAnimationTopに設定すると、他の面白いことが起こります。

+0

と....どこでそれを設定しますか? – Josh

+3

まだ修正されていません。ありがとうございました。 – Maik639

10

テーブルセルが静的(つまり、現在表示されているセルオブジェクトと同じセルオブジェクトを使用している)場合、表示されているのはトランジションアニメーションのアーティファクトです。

このように考えてください。 UITableViewAnimationOptionFadeを設定します。セルを置き換えるときは、置き換えられるセル(この場合は全く同じオブジェクト)にフェードインアニメーションが追加されます。次に、置き換えられているセル(再び、すべて同じオブジェクト)に、フェードアウトアニメーションが追加されます。最後に、セルは実際にそこにありますが、フェードアウトアニメーションによってそのセルオブジェクトが見えなくなっているので、見えません。

代替セルが置き換えられるセルとは異なるオブジェクトである非スタティックテーブルビューでは、アニメーションが2つの異なるオブジェクトに追加されるため、これは問題にはなりません。

+0

私はフレームワーク/推奨パターンがどのように細胞が実際に異なっていることが保証されるのか分かりません。 'dequeueReusableCellWithIdentifier'が隠されているのと同じ再利用可能なセルを返す可能性はありますか?私にとって、Appleはこのバグを修正するべきだと思う。新しいセルが古いセルであるかどうかを確認する単純なチェックで両方のシナリオをサポートすることはできません。 – devios1

+0

私が見つけた方法はありません。レーダーを提出すると思います。 – leftspin

+0

いい説明。そのときの解決策は何ですか? – Josh

関連する問題