码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-08-04 00:30:30      阅读:673      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!