zoukankan      html  css  js  c++  java
  • iOS开发——UI进阶篇(十四)modal

    一、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];
        
    }
    将来的你会感谢今天如此努力的你! 版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    备忘链接执行js时注意target必须是_self或者_top
    windows2003 Server远程连接Event Error;event id:12517,12503,1111
    网站配置了Url重写的Handler会导致虚拟目录找不到dll
    SEO 搜索引擎优化技巧
    11款开源Wiki管理系统
    收集了几个优秀的设计公司网站
    8款开源聊天系统和程序/Open Chat
    制作Web应用程序安装程序的方法
    转:推荐21套非常棒的网页设计图标素材
    14款开源文档管理系统
  • 原文地址:https://www.cnblogs.com/chglog/p/4700798.html
Copyright © 2011-2022 走看看