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.
3 に答える
-(void)viewWillAppear:アニメーション
[self.navigationController popViewControllerAnimated:YES]; の前に呼び出されたかどうかは不明です。しかし、確かにあなたが景色を見る前に。マップの注釈を再ロードする呼び出しを行います。
また、必ず viewWillAppear スーパーを呼び出してください。
両方のビューが同じデータ オブジェクトから機能しない場合は、データを送り返すデリゲートが必要です。
Andyが言ったように、デリゲートパターン、またはのいずれかを使用できます NSNotificationCenter
。私は個人的に使用しますNSNotificationCenter
。
通知センターを使用するには、ビュー コントローラー クラスにオブザーバーを追加する必要がupdate
ありupdate
ますupdate
。 .. 簡単です。
[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:nil];
完全なコードについては、この回答を確認してください: IOS: Move back two views
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];
それが役に立てば幸い。