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

本文详细介绍了如何在iOS应用中,通过 dismissing 视图控制器(ViewController2)直接返回至根视图控制器(rootViewController),包括按钮触发dismiss、通知机制以及移除通知的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如,从 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];
}
移除通知的地方自己可以根据自己的项目而用,该什么时候移除、在哪个方法中移除等考虑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启程Boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值