zoukankan      html  css  js  c++  java
  • 控制器的跳转-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];
        
    }
    复制代码
  • 相关阅读:
    redis的安装
    thinkphp5学习
    php数组排序和查找的算法
    phprpc的简单使用
    apache学习教程
    mysql的存储过程,函数,事件,权限,触发器,事务,锁,视图,导入导出
    php设计模式八-----装饰器模式
    php设计模式七 ---组合模式
    64bit ubuntu14.04编译PlatinumKit出现的arm-linux-androideabi-g++: not found错误解决方法
    TS相关知识点
  • 原文地址:https://www.cnblogs.com/wahy/p/4816496.html
Copyright © 2011-2022 走看看