实现视图控制器一次 dismissViewController 两个视图控制器

来源:互联网 发布:陕西千秋网络好不好 编辑:程序博客网 时间:2024/06/03 22:07

如,从 rootViewControllepresentViewControlle)到 ViewControlle1,再从ViewControlle1presentViewControlle)到 ViewControlle2。现在实现从(ViewControlle2)直接dismissViewControlle rootViewControlle

 1. dismiss两个视图控制器的按钮方法该视图控制器ViewControlle2)是上个视图控制器(ViewControlle1 presentViewControlle 的控制器

- (void)dismissButton:(UIButton *)sender{    //  当本视图控制器dismiss 完成后注册通知,名为“dismiss”    [self dismissViewControllerAnimated:NO completion:^{        [[NSNotificationCenter defaultCenter] postNotificationName:@"dismiss" object:self];    }];}

 2. ViewControlle1.m中的 viewWillAppear:方法中监测上一个视图控制器dismissViewControlle的通知,监测到之后就执行dismissSelf:里的方法

- (void)viewWillAppear:(BOOL)animated{    NSNotificationCenter *notification = [NSNotificationCenter defaultCenter];    [notification addObserver:self selector:@selector(dismissSelf:) name:@"dismiss" object:nil];}

3.得到通知执行的方法,让 ViewControlle1 dismissViewControllerootViewControlle

- (void)dismissSelf:(NSNotificationCenter *)notification{    [self dismissViewControllerAnimated:NO completion:^{        [[NSNotificationCenter defaultCenter] removeObserver:self name:@"dismiss" object:nil];    }];}

4.移除通知,可以在 viewDidDisappear:方法中执行

- (void)viewDidDisappear:(BOOL)animated{    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"dismiss" object:nil];}
移除通知的地方自己可以根据自己的项目而用,该什么时候移除、在哪个方法中移除等考虑


1 0
原创粉丝点击