• 控制器的跳转-modal与push


    一、modal与push
    modal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal

    push一般是上下文有关联时用,(比如设置界面的通用跳转页面)导航控制器才能用push

    A控制器modal出B控制器,那么A控制器就会强引用B,如果不强引用,无法处理B的业务逻辑(比如点击按钮回答A),会报野指针错误

    复制代码
    // modal另一个界面
    - (IBAction)modal:(id)sender {
        
        
        // 创建modal的控制器
        OneViewController *oneVc = [[OneViewController alloc] init];
        
        
        // 把新创建的控制器的View添加到窗口上
        UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
        [keyWindow addSubview:oneVc.view];
        
        
        // 从下往上钻的动画
        // 首先让oneVc的view显示在窗口的底部
        oneVc.view.transform = CGAffineTransformMakeTranslation(0, keyWindow.bounds.size.height);
        
        // 动画,往上移动,还原形变
    //    [UIView animateWithDuration:0.5 animations:^{
    //        // 还原形变
    //        // CGAffineTransformIdentity清空所有的形变,所有的形变参数都是0
    //        oneVc.view.transform = CGAffineTransformIdentity;
    //    } completion:^(BOOL finished) {
    //        self.presentedVC = oneVc;
    //    }];
        
        
        // A控制器modalB控制器,B控制器会被A控制器强引用
        // modal一个控制器
        [self presentViewController:oneVc animated:YES completion:^{
            
        }];
        
    }
    
    // modal:会把新控制器的view添加窗口上,但是不会修改窗口的根控制器
    // modal:会把新控制器强引用,谁modal,谁就强引用,为什么要强引用,如果不强引用,新创建的控制器就会被销毁,就不能处理modal出来界面的业务逻辑.
    复制代码

    关闭modal出来的控制器

    复制代码
    - (IBAction)dismiss:(id)sender {
        
        
        // modal出谁,谁就可以dismiss
        [self dismissViewControllerAnimated:YES completion:nil];
        
    }
    复制代码
  • 相关阅读:
    MongoDB学习(翻译6)
    MongoDB学习(翻译5)
    MongoDB学习(翻译4)
    MongoDB学习之--安全和认证
    MongoDB学习(翻译3)
    前端面试题—1
    静态网页制作
    风雨哈佛路感后感
    实习记录11
    实习记录10
  • 原文地址:https://www.cnblogs.com/wahy/p/4816496.html
Copyright © 2020-2023  润新知