1

UITableViewiPad のビューポートに約 20 行を含む があります。定期的に呼び出すインターバルタイマーがありますUITableView's reloadData(UIスレッドに投稿してください)。

UITableView中速(それほど速くない)でスクロールするUITableViewと、ちらつき効果で更新されます。

配列内のすべてのアイテムをループしてラベルを手動で更新する関数を作成する必要がUITableViewCellあります (この配列は、に表示されるすべてのアイテムを保持しますUITableView)。reloadData上記のように、呼び出しの代わりにタイマーが実行されているときにこの関数を実行します。その後、ちらつきの問題はなくなりました。

reloadData はすべての行ではなく現在表示されているセルのみを更新するため、すべてのデータをループするよりも reloadData の方が優れていると思いますが、ちらつきが発生する理由がわかりませんでした。理由を知っている人はいますか?

私が言及しなければならないことの1つはCellIdentifier、セルを再利用し、取得したセルがnullの場合にのみセルを作成するために正しく使用したことです。

さらに、iPhone ではこの問題は発生していません。これは、iPad に比べて iPhone の行数が少ないことが原因であると考えています。

誰でもこの問題について説明できますか?

4

2 に答える 2

3

を使用すると、ちらつきに同じ問題がありましたreloadDataindexPathsForVisibleRowsと を使用しcellForRowAtIndexPath:て、表示されているセルのみを更新することで解決しました。データセット全体を反復する必要はなく、限られた数の表示セルのみを反復する必要があるため、パフォーマンスは良好です。

于 2013-04-11T07:09:31.573 に答える
0

reloadDataテーブルビューが画面上に表示されているセルを再作成しますが、セルが破壊されるため、ちらつきが発生する可能性があります。テーブルビューをリロードするより良い方法があります。コアデータを使用していますか? その場合、NSFetchedResultsControllerとそのデリゲートは、基になるデータソースの変更をリッスンし、適切なセルのみを更新するため、テーブルビューを更新する優れた方法です。

于 2013-04-11T05:04:27.420 に答える