切换视图时触发事件

时间:2011-12-08 09:25:01

标签: objective-c xcode events view switch-statement

很容易。

假设我有两个视图: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?

1 个答案:

答案 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 !");
}

我希望这会对你有所帮助!