2017-04-22 5 views
0

私の質問のタイトルはこのように見えますが、タイトルよりもはるかに複雑です。UIRefreshを使用してテーブルビューを更新する

私はUIRefreshをプル・トゥ・リフレッシュに使用するテーブルビューを持っています。テーブルビューが更新されると、CloudKitから情報が取得されます。この投稿(Swift pull to reload duplicates objects in table instead of updating)の最初の回答から分かるように、CloudKitからデータを読み込む前に古いリストをクリアします。これはUIRefreshがアクティブである間、私のテーブルビューは三つの状態を通過する、ということを意味します

[古いデータが移入] - > [データなしですべて] - >

ユーザーがいる場合、[新しいデータが取り込ま] 2番目の段階でセルをタップしようとすると、クラウドからの情報に依存するビューコントローラが原因でアプリがクラッシュすることがあります。

私はこの問題の3つの潜在的な解決策を考えることができます。そして、もっと経験豊富なiOSプログラマーから最良の方法があれば助言を得ることを望んでいます。

1)ユーザーが読み込みプロセスのフェーズ2でセルをタップすると、何らかの形でアプリがそのリストにアクセスできるように、古いテーブルリストを保存します。

2)UIRefreshがアクティブな間にユーザーがセルをタップしないようにします。 (これは、ある時点でオートリフレッシュ機能を追加したいからです)

3)前述の2番目の回答にリンクされているStackOverflowポストは、最近変更されたアイテム...しかし、これは私の状況では厄介なものになると思います。セルのが変更されている可能性があり、それらのすべてが私の場合にリフレッシュされる必要があります。

ここでのベストプラクティスに関するアドバイスは非常に高く評価されます。ありがとう!

答えて

0

私のソリューション#1はかなりうまくいくようです。私がまだ発見していない落とし穴があるかどうかは分かりませんが、それはかなりうまくいくようです。

1

私の提案は、新しいデータが到着した後にのみデータを変更することです。すぐにデータを交換した後にtableView.reloadData()

関連する問題