2011-10-19 4 views
0

UITableViewをiDeviceの背後にいるユーザーに気づかずに再ロードするにはどうすればよいですか?Objective-C - ユーザーに気づかずにUITableViewをリロードする

私は通知を観察し[self.table reloadData]を呼び出しますが、私はこの更新がステルスで作られ、利用者に示したないことにしたいセレクタを実行し、私RootViewControllerに通知を送信することにより、-applicationWillEnterForeground:で私UITableView sのデータソースを更新しています。

私があなたの質問で少し混乱しているが、私は何を探していることは、それが画面に表示される前に、はい、データを再ロードするための方法だと思います-viewWillAppear:-applicationWillEnterForeground:

+0

ユーザーに、テーブルが再読み込みされたことを通知するアラートや情報はありますか? –

+0

'[self.table reloadData]'が呼び出されると、行(または多くの行)が消えます。私はユーザーにこれを見せたくありません。 –

+0

希望の結果は何ですか?テーブルは変わらない? –

答えて

1

前に解雇されているようですか?

通知ではなく、データの更新方法を直接呼び出す方法を考えてみましょう。この通知により、データの更新が-applicationWillEnterForegroundから切り離され、表示時間が表示されます。

  1. applicationWillEnterForeground
  2. viewWillAppear
  3. ビューが表示されます。

    シーケンスは、おそらくこのようなものです。

  4. 通知オブザーバ方法は

    と呼ばれているA)通知オブザーバメソッド呼び出し[self.table reloadData]

  5. テーブルビュー画面のリフレッシュ。

必要なのは、通知メソッドを、ビューが表示される前に呼び出されるメソッドに結合することです。 applicationWillEnterForegroundまたはviewWillAppearから直接電話してください。

  1. applicationWillEnterForeground

    a)は、データのリフレッシュメソッドが呼び出されます。それは次のように出てプレーする方法

    。 ([self.table reloadData]呼び出す必要、のtableViewはまだで、すべてのデータをロードしていません。)

  2. viewWillAppear
  3. ビューが表示されません。
  4. テーブルビューには、既に更新されたデータが読み込まれます。

またはこのような:

  1. applicationWillEnterForeground
  2. viewWillAppear

    a)は、データのリフレッシュ方法が呼び出されます。 ([self.table reloadData]を呼び出す必要はありませんが、tableViewはまだデータをロードしていません)。

  3. ビューが表示されます。
  4. テーブルビューには、既に更新されたデータが読み込まれます。
+0

実際、私はあなたが示唆している2番目の方法のようにしていますが、何らかの理由で-viewWillAppearが-applicationWillEnterForegroundより前に実行されています –

+0

したがって、データリロードコードを-viewWillAppearに移動しますか?本当の問題は何ですか?私はそれが "表示される前に読み込まれていないデータがあるので、目に見えるリフレッシュがある"という前提で作業していました。 –

+0

どのようにデータをロードしていますか?それはネットワーク操作ですか...? –