很容易。
假设我有两个视图:firstView和SecondView。
firstView是ROOT视图。
我从firstView加载secondView:
secondView *secondViewController;
secondViewController = [[SecondView alloc]
initWithNibName:@"SecondView" bundle:nil];
[self.view addSubview:SecondViewController.view];
我在secondView中添加了一个“后退”按钮。
当我点击该按钮时,我会回到firstView:
[self.view removeFromSuperView];
以下是问题:
当firstView - >触发第二视图中的secondView, viewDidLoad 。
当我在secondView中使用 removeFromSuperView 返回时,如何触发事件通知 firstView?
答案 0 :(得分:0)
你想做什么?也许你只是想从你的第一个视图控制器转到你的第二个视图控制器?然后回到你的第一个视图控制器?在这种情况下,如果您的第一个控制器已嵌入导航控制器中,则执行此操作:
[self.navigationController pushViewController:secondViewController animated:YES];
但是,如果您只想从Interface Builder创建视图,然后将其添加到第一个视图上方,则可以在第二个视图中单击“后退”按钮时使用通知中心发布事件:
- (void) backButtonClicked:(id)sender {
[self.view removeFromSuperView];
[[NSNotificationCenter defaultCenter] postNotificationName:@"back"
object:self.view];
}
然后,您可以在第一个视图控制器中为此事件添加观察者,如下所示:
- (void) pushSecondViewController {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(secondViewDidGoBack:)
name:@"back"
object:secondViewController.view];
SecondView *secondViewController = [[SecondView alloc] initWithNibName:@"SecondView"
bundle:nil];
[self.view addSubview:secondViewController.view];
}
- (void) secondViewDidGoBack:(NSNotification *)notification {
[[NSNotificationCenter defaultCenter] removeObserver:self];
NSLog(@"My Second View Did Go back !");
}
我希望这会对你有所帮助!