2

タブバーコントローラーを備えた3つのタブがあります。タブ バーの 3 つのビュー コントローラーにはすべて、他のビュー コントローラーに移動するためのナビゲーション コントローラーがあります。

タブ バーのビュー コントローラーの 1 つは、マップとマップの注釈 (マップ ビュー コントローラー) を備えています。これらの注釈は、アプリの起動時の現在の場所に基づいて Web サービスから取得されます。マップ ビュー コントローラーでは、上部にナビゲーション バー アイテム (検索ボタン) があり、マップ内の別の場所を検索できます。検索ボタンをクリックすると、検索ビュー コントローラーがナビゲーション スタックにプッシュされます。検索が完了し、新しい場所が見つかった後、新しい場所が同じ検索ビュー コントローラーのテーブル ビューに表示されます。

私の目標は、テーブル ビュー アイテムをクリックすると自動的にマップ ビューに戻り、新しく検索された場所に基づいて新しい注釈データをマップにロードすることです。マップ ビューが再び表示されると、アプリの最初の起動時に取得された古いデータは、Web から取得した新しいデータに置き換えられます。タブ バーの 3 つのビュー コントローラーはすべて、シングルトン オブジェクトを介して注釈データを共有します。

私の質問は、ユーザーが検索ビュー コントローラーのdidSelectRowAtIndexPathメソッドでアイテムをクリックしたときに、新しいデータでマップ ビューに戻るにはどうすればよいですか? タブ バーのマップ ビューに戻り、Web サービスからデータを再度読み込むにはどうすればよいですか?

検索ビュー コントローラで「 popViewControllerAnimated 」を使用してから、マップ ビュー コントローラの「viewWillAppear」メソッドで作業しますか? 新しい場所の緯度と経度の値を検索ビュー コントローラーからマップ ビュー コントローラーに渡すにはどうすればよいですか? 「マップ ビュー コントローラー」によってプッシュされて「検索ビュー コントローラー」が生成されたとしても、マップ ビュー コントローラーを検索ビュー コントローラーにインポートし、マップ ビュー コントローラーの ivar に緯度と経度を設定する必要がありますか? マップ ビュー コントローラーが既にメモリ内にあるため、マップ ビュー コントローラーを検索ビュー コントローラーにインポートする際の複雑さは何ですか?

私が達成しようとしていることは、無料アプリ「ウィキフッド」が地図を検索するときに行っていることと似ています。

どうもありがとうございました。

4

1 に答える 1

0

シングルトン オブジェクトをデータ モデルとして使用できるようです。そうviewWillAppear:すれば、データ モデルに現在設定されている場所が表示されるだけで、検索コントローラーにはその結果を配置するのに便利な場所があります。

頭に浮かぶ他のオプションはデリゲートまたは通知ですが、モデル オブジェクトが既にあるため、それを使用し続けることは一貫しています。

于 2012-04-06T22:05:08.607 に答える