NSNotificationCenter
使用するか、デリゲートパターン
を使用できるいくつかのオプションがあります。NSNotificationCenterは使いやすいですが、注意が必要です。
通知センターを使用するには、ビュー コントローラー クラスにオブザーバーを追加する必要があります。モーダル ビュー コントローラーを閉じると、ビュー 3 が現在閉じられていることをビュー 2 に通知し、view2 自体を閉じることができます.....
したがって、基本的にセンターに通知すると、通知されたものは何でもメソッドを実行します....
ビュー 3 で、ビューを閉じたいとしましょう。
in view3 .m
-(IBAction)yourMethodHere
{
//dissmiss view
[self.navigationController dismissModalViewControllerAnimated:YES];
// or [self dismissModalViewControllerAnimated:YES]; whateever works for you
//send notification to parent controller and start chain reaction of poping views
[[NSNotificationCenter defaultCenter] postNotificationName:@"goToView2" object:nil];
}
ビューで 2。時間
// For name of notification
extern NSString * const NOTIF_LoggingOut_Settings;
2. m 前@implementation
後#imports
NSString * const NOTIF_LoggingOut_Settings = @"goToView2";
@implementation
-(void)viewDidAppear:(BOOL)animated{
// Register observer to be called when logging out
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loggingOutSettings:)
name:NOTIF_LoggingOut_Settings object:nil];
}
/*---------------------------------------------------------------------------
* Notifications of 2 view
*--------------------------------------------------------------------------*/
- (void)loggingOutSettings:(NSNotification *)notif
{
NSLog(@"Received Notification - Settings Pop Over popped");
[self.navigationController popViewControllerAnimated:NO];// change this if you do not have navigation controller
//call another notification to go to view 1
[[NSNotificationCenter defaultCenter] postNotificationName:@"goToFirstView" object:nil];
}
view1.h の最初のビューに別のオブザーバーを追加します
extern NSString * const NOTIF_FirstView;
in view 1.m 前@implementation
後#imports
NSString * const NOTIF_FirstView = @"goToFirstView";
@implementation
-(void)viewDidAppear:(BOOL)animated{
// Register observer to be called when logging out
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doYourThing:)
name:NOTIF_FirstView object:nil];
}
/*---------------------------------------------------------------------------
* Notifications of 1 view
*--------------------------------------------------------------------------*/
- (void)ldoYourThing:(NSNotification *)notif
{
// do your thing
}