0

i have two viewcontroller. First view controller include a map and annotations, when i touch an annotation my second view come. At second view i touch the delete button. So my first view's content must be refresh before this code : [self.navigationController popViewControllerAnimated:YES]; i need to call viewdidload method or refresh the content of my previous view from second view.

4

3 に答える 3

4

-(void)viewWillAppear:アニメーション

[self.navigationController popViewControllerAnimated:YES]; の前に呼び出されたかどうかは不明です。しかし、確かにあなたが景色を見る前に。マップの注釈を再ロードする呼び出しを行います。

また、必ず viewWillAppear スーパーを呼び出してください。

両方のビューが同じデータ オブジェクトから機能しない場合は、データを送り返すデリゲートが必要です。

于 2013-01-25T15:14:37.360 に答える
0

Andyが言ったように、デリゲートパターン、またはのいずれかを使用できます NSNotificationCenter。私は個人的に使用しますNSNotificationCenter

通知センターを使用するには、ビュー コントローラー クラスにオブザーバーを追加する必要がupdate ありupdateますupdate。 .. 簡単です。

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

完全なコードについては、この回答を確認してください: IOS: Move back two views

于 2013-01-25T15:14:39.343 に答える
0

ViewControllerにオブジェクトの変更があるため、ViewWillApearまたはViewDidApearが呼び出されますが、viewcontrollerAを別のviewcontrollerBから変更する場合は、NSNotificationCenterがviewcontrollerAから関数を呼び出す必要があります

NSNotificationCenter をいつでも使用して、親ビューコントローラーを更新できます

親ビューコントローラーにこれを置きます:

//since child view controller calls turnItOff, notification center calls function "turnButtonCountinuesOff"
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(turnButtonCountinuesOff) name:@"turnItOff" object:nil];

turnButtonCountinuesOff は、親ビューコントローラーでの関数です

あなたの子ViewControllerにこれを置きます:

//connect to parent UI view controller calls notification turnItOff.
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil];

それが役に立てば幸い。

于 2013-06-26T10:55:41.263 に答える