首页 > 移动平台 > 详细

IOS开发——UI进阶篇(十四)modal

时间:2015-08-04 00:30:01      阅读:271      评论:0      收藏:0      [点我收藏+]

一、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];
    
}

 

IOS开发——UI进阶篇(十四)modal

原文:http://www.cnblogs.com/chglog/p/4700798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!