zoukankan      html  css  js  c++  java
  • iOS UI进阶03

    导航控制器

    1.导航控制器永远显示的是栈顶控制器的view

    2.导航控制器中做界面之间的跳转必须拿到导航控制器

    3.调用pop方法并不会马上销毁当前控制器

    4.popToViewController使用注意点,传入进去的控制器必须是导航控制器栈里面的控制器

    5.导航条的内容由栈顶控制器决定,一个导航控制器只有一个导航条,因此只能由一个控制器决定,谁先显示在最外面,谁就是栈顶控制器.

    6.在iOS7之后,默认会把导航条上的按钮的图片渲染成蓝色.

    7.导航条上的子控件位置不需要我们管理,只需要管理尺寸

    8.UINavigationItem:是一个模型,决定导航条的内容(左边内容,中间,右边内容)

    1. UIBarButtonItem:是一个模型,决定导航条上按钮的内容

    10.以后只要看到item,通常都是苹果提供的模型,只要改模型就能修改苹果的某些控件.

    1-控制器view的生命周期

    1. 控制器的view的生命周期方法都是以view开头

    2. viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear

    3.在非ARC中viewDidUnload,经常用来清空界面上的数据

    2-数据存储

    1.plist存储

    1.plist存储,生成一个plist文件.

    2.plist不是数组就是字典,plist存储就是用来存储字典或者数组.

    注意:Plist不能存储自定义对象

    3.获取应用沙盒中Caches文件路径

    
        // directory:获取哪个文件夹
        // domainMask:在哪个范围内搜索,NSUserDomainMask:表示在用户的手机上查找
        // expandTilde:是否展开全路径 YES:表示展开全路径 NO:不会展开全路径,会把应用沙盒的路径用波浪号(~)代替
    
        // 获取到Caches文件夹路径
        NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
    

    4.读取plist,之前是什么类型存储的,读取也是什么

    2.偏好设置存储

    
        // 偏好设置存储:NSUserDefaults
        // 以字典的形式进行偏好设置,用法跟字典.
        // 偏好设置好处:  1.不需要关心文件名
        //              2.快速进行键值对存储
        //              3.直接存储基本数据类型

    @implementation ViewController

    - (IBAction)save:(id)sender { 

        // 获取单例

        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

        

        // @"123" key:pwd

        [defaults setObject:@"123" forKey:@"pwd"];

        // bool

        [defaults setBool:YES forKey:@"isOn"];

        // int

        [defaults setInteger:10 forKey:@"num"];    

    }

    - (IBAction)read:(id)sender {

            // 利用NSUserDefaults单例

       NSString *pwd = [[NSUserDefaults standardUserDefaults] objectForKey:@"pwd"];

       NSInteger i = [[NSUserDefaults standardUserDefaults] integerForKey:@"num"];

        NSLog(@"%@--%ld",pwd,i);  

    }

    3.归档

    1.NSKeyedArchiver专门用来做自定义对象归档

    // 什么时候调用:当一个对象要归档的时候就会调用这个方法归档
    // 作用:告诉苹果当前对象中哪些属性需要归档
    - (void)encodeWithCoder:(NSCoder *)aCoder
    {
        [aCoder encodeObject:_name forKey:@"name"];
        [aCoder encodeInt:_age forKey:@"age"];
    }
    
    // 什么时候调用:当一个对象要解档的时候就会调用这个方法解档
    // 作用:告诉苹果当前对象中哪些属性需要解档
    // initWithCoder什么时候调用:只要解析一个文件的时候就会调用
    - (id)initWithCoder:(NSCoder *)aDecoder
    {
        #warning  [super initWithCoder]
        if (self = [super init]) {
            // 解档
            // 注意一定要记得给成员属性赋值
          _name = [aDecoder decodeObjectForKey:@"name"];
          _age = [aDecoder decodeIntForKey:@"age"];
        }
        return self;
    }
  • 相关阅读:
    Python解释器
    js子节点children和childnodes的用法
    添加jar包需注意
    Class.forName("com.mysql.jdbc.driver");
    java集合类总结
    interface思考练习一
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    Struts2的配置文件中, <package>的作用,<action><result>重名?
    在Struts2的Action中获得request response session几种方法
    学习一直都是一个相见恨晚的过程,我希望我的相见恨晚不会太晚。
  • 原文地址:https://www.cnblogs.com/liujiaoxian/p/4748828.html
Copyright © 2011-2022 走看看