5

Iphone アプリケーション (ios5 + ストーリーボード + アーク) に取り組んでいます。私は2つのViewControllers AとBを持っています。

AIにはボタンがあります。押されると、(AFNetworking を使用して) サーバーに非同期的に要求を送信し、performSegueWithIdentifier (プッシュではなくモーダル) を使用してビュー コントローラー B に移動します。

リクエストが完了すると、データをデータベースに保存するリクエスト成功ブロックが実行されます。(リクエストはそこから送信されるため、ブロックはViewController Aにあります)

リクエストが終了したことを ViewController B に通知し、B でメソッドを実行する方法はありますか?

私が探しているのは、リクエストが終了して成功ブロックに入ると、ロードされたビューであるビュー コントローラー B でメソッドを実行することです。

私がはっきりしていたことを願っています。

ありがとう

4

2 に答える 2

14

通知を投稿するには、次のコードを使用します。

[[NSNotificationCenter defaultCenter] postNotificationName:@"Midhun" object:nil];

通知リスニング クラスの viewDidLoad に、次のようなオブザーバーを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(performTask:) name:@"Midhun" object:nil];

performTask:通知が監視されたときに呼び出されるメソッドです。

NSNotification クラス リファレンスを参照してください。

于 2012-10-31T11:45:43.500 に答える
1

最初のオプションは、ビュー コントローラー B への参照をどこかに保存し (アプリケーション デリゲートの例のように)、それを使用してメソッドを実行することです。

2 つ目は を介し​​て通知を送信する[NSNotificationCenter defaultCenter]ため、コントローラ B はリスナーをどこかの通知に設定します (viewDidLoad が適切な場所になる可能性があります)。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finished:) name:@"requestfinishes" object:nil];

そしてcontrolle Aはそれを送信します:

[[NSNotificationCenter defaultCenter] postNotificationName:@"requestfinishes" object:nil userInfo:nil];

別のスレッドから通知を送信すると、リスナーは同じスレッドで実行されることに注意してください。

于 2012-10-31T11:50:06.460 に答える