美文网首页
modal出来一个控制器的浅析

modal出来一个控制器的浅析

作者: Z了个L | 来源:发表于2016-08-05 11:03 被阅读34次
    // 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];
    }
    
    
    

    相关文章

      网友评论

          本文标题:modal出来一个控制器的浅析

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