1

この質問はこれと非常に似ていますが、そこには答えがありません。私はその質問にコメントしたり何もしたりすることができず、状況が少し異なります。

カスタムビューを含むカスタムtableViewCellがあります。このカスタムビューには、UIImageViewとUIActivityIndi​​catorViewが含まれており、カスタムローダークラスがアタッチされています。このビューが最初に表示されると、画像は非表示になり、activityIndi​​catorがアニメーション化されます。次に、読み込みプロセスが起動され(画像は何らかのURLから読み込まれます)、画像が正常に読み込まれると、カスタムビューに表示されます。すべてが完璧に機能しますが、tableViewを非常に高速にスクロールすると、多くのバックグラウンドNSURLConnectionsが無駄に機能します。バックグラウンド接続をキャンセルするためのメソッドもいくつか作成しましたが、必要なときに呼び出すことができません。tableViewCellが画面外になったときに呼び出されるメソッドはありません。バックグラウンド接続をキャンセルできるように、イベントが本当に必要です。それを行う方法はありますか?私は本当にしません

4

1 に答える 1

2

私の提案は、UITableViewCellのprepareForReuse:メソッドでネットワークリクエストをキャンセルすることです。これは簡単で、セルが画面から少し外れてから再びオンになっても、リクエストをキャンセルしないことを意味します。(tableView:cellForRowAtIndexPath:セルを取り戻して再利用するときにもこれを行うことができます。)

また、高速スクロールの際に、そもそもこれらのロードを開始しないようにすることも検討してください。読み込みを停止しscrollViewWillBeginDragging:、たとえばテーブルビューからのコールバックまで待って scrollViewDidEndDragging:willDecelerate:から、表示されているセルの実際のURLリクエストを開始できます。

于 2013-03-11T11:37:38.107 に答える