zoukankan      html  css  js  c++  java
  • iOS开篇——UI之UIViewController

    UIViewController的生命周期

    - (void)loadView{}  用于创建self.view

    - (void)viewDidLoad{} self.view创建完毕

    - (void)viewWillAppear:(BOOL)animated{}视图即将显示

    - (void)viewDidAppear:(BOOL)animated{} 视图已经显示

    - (void)viewWillDisappear:(BOOL)animated{} 视图即将消失

    - (void)viewDidDisappear:(BOOL)animated{} 视图已经消失

    - (void)didReceiveMemoryWarning{} 内存不足 警告

    视图之间的模态跳转

        //在这里进行模态跳转
        
        SecondViewController * secondVC = [[SecondViewController alloc]init];
    
        //设置跳转模式 样式
        secondVC.modalTransitionStyle =UIModalTransitionStylePartialCurl;
    
        /*
         typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
         UIModalTransitionStyleCoverVertical = 0,   //向上覆盖
         UIModalTransitionStyleFlipHorizontal __TVOS_PROHIBITED,  //翻转
         UIModalTransitionStyleCrossDissolve,    //渐变
         UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2)  //翻页__TVOS_PROHIBITED,
         };
         */
    
    
       //下面是进行模态跳转
        //第一个参数 是要跳转到的视图控制器
        //第二个是 动画的有无
        //第三个是一个block 作用为跳转完成后的回调 完成后执行block
        [self presentViewController:secondVC animated:NO completion:^{
            NSLog(@"跳转完成");
        }];
        //模态回跳
        [self dismissViewControllerAnimated:YES completion:^{
            NSLog(@"回跳完成");
        }];

    设置自定义的动画

    //导入头文件
    #import <QuartzCore/QuartzCore.h>    
    //创建一个动画
        CATransition * transition = [[CATransition alloc]init];
        //设置动画时间
        transition.duration = 0.3;
        //设置动画
        //跳转方向
        transition.subtype = @"fromRight";
        //跳转类型
        transition.type = @"push";//cameraIres
        
        [self.view.superview.layer addAnimation:transition forKey:nil];

    视图容器   相当于rootVC下还有两个视图控制器对象

    //创建三个视图控制器对象
        //设定rootVC为容器视图控制器
        
        RootViewController * rootVC = [[RootViewController alloc]init];
        FirstViewController * firstVC = [[FirstViewController alloc]init];
        SecondViewController * secondVC = [[SecondViewController alloc]init];
        //添加视图控制器
        [rootVC addChildViewController:firstVC];
        [rootVC addChildViewController:secondVC];
        
        //把容器视图控制器设置为根视图
        _window.rootViewController = rootVC;

    容器内视图控制器的跳转

        //点击按钮 跳到第二个子视图控制器
        
        //第一个参数 执行跳转的视图控制器
        //第二个参数 要跳转到的
        //第三个 时间
        //第五个 动画
        //第六个 回调
        [self.parentViewController transitionFromViewController:self toViewController:self.parentViewController.childViewControllers[1] duration:1 options:0 animations:nil completion:nil];
        //跳转回第一个视图控制器
        [self.parentViewController transitionFromViewController:self toViewController:self.parentViewController.childViewControllers[0] duration:1 options:0 animations:nil completion:nil];

    //设置是否旋转

    - (BOOL)shouldAutorotate{
        return YES;
    }

    视图控制器之间的传值

    正向传值    用下一个视图控制器对象中的属性接收即可  

    反向传值    需要用代理传值   

    如视图控制器 1 2 3 

    1 2 3模态跳转再回跳

    1——>2——>3 跳转的时候 给暴露出的属性直接传值

    1<——2<——3  3制订协议 2为3的代理实现协议方法接收传来的值     2再制定协议 1遵守协议为2的代理 实现协议方法 接收传来的值。

        //1跳2
        SecondViewController * secondVC = [[SecondViewController alloc]init];
        secondVC.str = @"我是第一个视图控制器传来的";
        secondVC.delegate = self;
        [self presentViewController:secondVC animated:YES completion:nil];
    
    
    
        //2跳3
        ThirdViewController * thirdVC = [[ThirdViewController alloc]init];
        thirdVC.str = _str;
        thirdVC.delegate = self;
        [self presentViewController:thirdVC animated:YES completion:nil];
    
    
    
        //3回跳2
        if ([_delegate respondsToSelector:@selector(receiveString:)]) {
            [_delegate receiveString:@"我是第三个视图控制器传来的"];
        }
        [self dismissViewControllerAnimated:YES completion:nil];
    
    
    
        //2回跳1
        if ([_delegate respondsToSelector:@selector(receiveString:)]) {
            [_delegate receiveString:_backStr];
        }
        [self dismissViewControllerAnimated:YES completion:nil];
  • 相关阅读:
    内存不足报错
    curl Command Download File
    How to POST JSON data with Curl from Terminal/Commandline to Test Spring REST?
    IOS常用手势详解
    OC中的NSNumber、NSArray、NSString的常用方法
    如何利用autolayout动态计算UITableViewCell的高度
    对AFN和ASI各自使用方法及区别的总结
    转:你真的懂iOS的autorelease吗?
    文件管理(续)
    IOS文件管理
  • 原文地址:https://www.cnblogs.com/gwkiOS/p/4979628.html
Copyright © 2011-2022 走看看