iOS 如何dismiss所有modalViewController

从视图控制器A  presentViewController 到viewControllerB 再到c...等

获取A,A执行dismissViewController即可

//如果A已经present出了B 已经presented出的话, ApresentedViewControllerViewControllerBBpresentingViewControllerViewController


一个简单写法:

- (void)dissmissAllModalControllerAnimated:(BOOL)flag{

    UIViewController *presentingViewController = self.presentingViewController ;

    UIViewController *lastVC = self ;

    while (presentingViewController) {

        id temp = presentingViewController;

        presentingViewController = [presentingViewController presentingViewController];

        lastVC = temp ;

    }

    [lastVC dismissViewControllerAnimated:flag completion:^{

        

    }];

}


iOS中,常用的视图跳转方式有以下几种: 1. 使用导航控制器进行视图跳转 在当前视图控制器中使用以下代码进行跳转: ``` let vc = NextViewController() self.navigationController?.pushViewController(vc, animated: true) ``` 其中`NextViewController`是要跳转的目标视图控制器,`pushViewController`方法可以将目标视图控制器推入导航控制器中,即进行跳转。 在目标视图控制器中,可以使用以下代码返回上一级视图控制器: ``` self.navigationController?.popViewController(animated: true) ``` 2. 使用模态视图(Modal)进行视图跳转 在当前视图控制器中使用以下代码进行跳转: ``` let vc = NextViewController() self.present(vc, animated: true, completion: nil) ``` 其中`NextViewController`是要跳转的目标视图控制器,`present`方法可以将目标视图控制器以模态视图的形式展示出来,即进行跳转。 在目标视图控制器中,可以使用以下代码返回上一级视图控制器: ``` self.dismiss(animated: true, completion: nil) ``` 3. 使用TabBar进行视图跳转 使用TabBar可以在不同的视图控制器之间进行切换,常用于应用程序主界面的导航。 在当前视图控制器中使用以下代码进行跳转: ``` self.tabBarController?.selectedIndex = 1 ``` 其中`selectedIndex`是TabBar中要切换到的视图控制器的索引,从0开始计数。 4. 使用代码手动加载视图进行跳转 在当前视图控制器中使用以下代码进行跳转: ``` let vc = NextViewController() self.view.addSubview(vc.view) self.addChild(vc) vc.didMove(toParent: self) ``` 其中`NextViewController`是要跳转的目标视图控制器,通过将其`view`添加到当前视图控制器中,来展示目标视图控制器的内容。 在目标视图控制器中,可以使用以下代码返回上一级视图控制器: ``` self.willMove(toParent: nil) self.view.removeFromSuperview() self.removeFromParent() ``` 以上就是iOS中常用的视图跳转方式,可以根据需要选择合适的方式进行跳转。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值