美文网首页
记录两个dismissViewController 的扩展方法

记录两个dismissViewController 的扩展方法

作者: Nulll | 来源:发表于2021-01-05 13:56 被阅读0次

有时候在多次调用presentViewController: 方法的时候,可能有需求像 push一样,需要pop 到根控制器,或者pop到指定控制器。但是presentViewController:之后却只有 dismissViewControllerAnimated:这一个方法。于是乎想到了写一个类似于pop 的方法来实现dismiss 到指定控制器,或者dismiss到根控制器。

第一个。dismiss到根控制器

///1、dismiss 掉所有控制器。
- (void)dismissToRootViewControllerAnimated:(BOOL)animated completion:(void (^ __nullable)(void))completion {
    //[self.navigationController popToRootViewControllerAnimated:<#(BOOL)#>]
    
    UIViewController *vc = self;
    while (vc.presentingViewController) {
        vc = vc.presentingViewController;
    }
    [vc dismissViewControllerAnimated:animated completion:completion];
    
}

第二个。dismiss到指定控制器

///2、dismiss 到指定控制器。
- (void)dismissToViewController:(UIViewController *)viewController animated:(BOOL)animated completion:(void (^ __nullable)(void))completion {
    //[self.navigationController popToViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#>]
    
    UIViewController *flag = nil;
    UIViewController *vc = self;
    while (vc.presentingViewController) {
        vc = vc.presentingViewController;
        if ([vc isKindOfClass:[viewController class]]) {
            flag = vc;
            break;
        }
    }
    [flag dismissViewControllerAnimated:animated completion:completion];

}

相关文章

  • 记录两个dismissViewController 的扩展方法

    有时候在多次调用presentViewController: 方法的时候,可能有需求像 push一样,需要pop ...

  • iOS dismissViewController跳转到Root

    在开始之前首先要了解的是:presentViewController、dismissViewController进...

  • morgan nodejs日志组件两种用法

    记录请求参数和请求内容 默认morgan没有提供记录请求参数和请求内容的方法,但是他提供了扩展方法,如下: 输出日...

  • Kotlin-面向对象-进阶

    扩展 扩展方法 Kotlin支持扩展方法和扩展属性。语法:被扩展的类/接口名.方法名() 父类不能使用子类的扩展方...

  • 扩展方法

    扩展方法: 扩展方法的类必须声明为static 扩展方法本身也必须声明为static 扩展方法必须包含关键字thi...

  • JS系列(四):apply与call

    这两个都属于Function.prototype中扩展的方法,有些许不同。这两个方法都会改变this的指向(在之后...

  • ES6新增特性(二)

    ES6 的内置对象扩展 Array 的扩展方法 一、Array 的扩展方法 1. 扩展运算符(展开语法) 扩展运算...

  • IOS-Tips

    1.解决webView加载html选择本地相册出现退出界面问题 需要重写dismissViewController...

  • Swift- Extension

    扩展属性(只能是计算属性) 扩展构造器 扩展方法 通过扩展方法, 可以修改该实例self本身.但是方法前要加 mu...

  • 23、扩展方法

    1.定义: 2.定于扩展方法 Personl类的定义 为Person类扩展方法 扩展方法被定义为静态方法,但它们是...

网友评论

      本文标题:记录两个dismissViewController 的扩展方法

      本文链接:https://www.haomeiwen.com/subject/ihoioktx.html