您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页modal出来一个控制器的浅析

modal出来一个控制器的浅析

来源:二三四教育网
// modal出来一个控制器
- (IBAction)modal:(id)sender {
    
    //一但控制器被销毁,它里面业务逻辑就不能够处理
    TwoViewController *twoVC = [[TwoViewController alloc] init];
    
    // modal出来的控制器View添加到窗口上面
    // 把窗口的根控制器的view移除
    // self.presentedViewController强引用modal出来的控制器.
    // 窗口的根控制器没有改变
    NSLog(@"1-----%@",self.presentedViewController); // null

    [self presentViewController:twoVC animated:YES completion:^{
        
        NSLog(@"2-----%@",[UIApplication sharedApplication].keyWindow.rootViewController); // <ViewController: 0x7ff1fbf3eab0>      A
        
    }];
    
    // A Modal 出来 B
    // 那么 self.presentedViewController === B
    NSLog(@"3-----%@",self.presentedViewController); // <TwoViewController: 0x7ff1fbe18740>     B
    NSLog(@"4-----%@", self); // <ViewController: 0x7ff1fbf3eab0>       A
}

// A --modal--> B
// A.presentedViewController == B
// B.presentingViewController == A
// 如果想利用一个A控制器弹出另外一个B控制器
// A控制器的条件是A的view得在window上

- (void)addClick{

    LZAddTagViewController *addTag = [[LZAddTagViewController alloc] init];
    LZNavigationController *nav = [[LZNavigationController alloc] initWithRootViewController:addTag];

    // 拿到"窗口根控制器"曾经modal出来的“发表文字”所在的导航控制器
    // 现在我们要通过窗口根控制器拿到B
    [self.window.rootViewController.presentedViewController presentViewController:nav animated:YES completion:nil];
}


Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务