美文网首页
iOS 11:完善通讯录、block讲解、数据存储

iOS 11:完善通讯录、block讲解、数据存储

作者: d2cd99b0efce | 来源:发表于2016-04-05 18:55 被阅读113次

    搭建编辑界面

    • 通过storyboard与代码相结合,代替segue 的功能

      • 1.创建UIStroryboard对象
      • 2.根据此对象实例化viewController
      • 3.然后在当前控制器方法中push此viewController,实现跳转
    • [self.view endEditing] = YES,表示退出编辑界面,键盘消失

    • 注意:控制器之间传值,一定要注意控制器的子控件有没有加载,一定要在子控件加载完成的时候给子控件赋值。一般在viewDidLoad:中赋值。

    block 讲解

    • 如何定义block
         // blockName:block变量名
         <#returnType#>(^blockName)(<#parameterTypes#>) = ^(<#parameters#>) {
         <#statements#>
         };
    
    • 如何调用block:直接blockName(parameter)。
    • block的作用,跟函数/方法很像,代表了一个代码块。只不过方法需要对象来调用,函数声明的时候必须实现。block声明与实现,可以放在2各不同的地方。
    • 什么时候使用block
      • 逆传:用bloack来传值。
      • 处理网络的时候经常使用block封装代码。请求网络数据(延迟)先把展示到控件的代码先保存到block,等请求到数据的时候直接调用block。
      • block 轻量级的小弟,代理:打电话给客服。

    数据存储

    • 5种方式

      • xml属性列表(plist)存储
      • perference偏好设置
      • NSKeyedArchiver归档(NSCoding)
      • SQLite 3
      • Core Data
    • 应用沙盒,每个app都有自己的应用沙盒,与其他app的应用沙盒相互隔离,并拒绝访问。

      • documents,苹果不允许写入至documents
      • library/caches
      • library/preferences
      • tmp
    • plist 一般存储数组与字典,不能够存储自定义类型。如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中。

    • 偏好设置 NSUerDefaults 是单例,底层就是封装了一个字典,写进plist文件中。很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能。

    • NSKeyedArchiver ,自定义对象必须遵守NSCoding协议,并实现协议的方法encodeWithCoder: 与 initWithCoder:。完成归档、解挡。举例:

    @implementation Person
    - (void)encodeWithCoder:(NSCoder *)encoder {
        [encoder encodeObject:self.name forKey:@"name"];
        [encoder encodeInt:self.age forKey:@"age"];
        [encoder encodeFloat:self.height forKey:@"height"];
    }
    - (id)initWithCoder:(NSCoder *)decoder {
        self.name = [decoder decodeObjectForKey:@"name"];
        self.age = [decoder decodeIntForKey:@"age"];
        self.height = [decoder decodeFloatForKey:@"height"];
        return self;
    }
    - (void)dealloc {
        [super dealloc];
        [_name release];
    }
    @end
    
    • 如果归档是自定义对象数组,底层会遍历数组元素一个一个归档。
    • 使用archiveRootObject:toFile:方法可以将一个对象直接写入到一个文件中,但有时候可能想将多个对象写入到同一个文件中,那么就要使用 NSData 来进行归档对象。

    UITabBarController

    • 轻松的管理多个控制器,实现控制器之间的跳转切换。

    • 主流框架应该是:UITabBarController 包含 UINavigationController。

    • 在iOS7之后,导航控制器下所有的UIScrollView顶部都会添加额外的滚动区域:64。

    • UITabBarController 的使用步骤

      • 初始化UITabBarController
      • 设置UIWindow的rootViewController 为UITabBarController
      • 根据具体情况,通过addChildViewController 方法添加对应个数的子控制器
    • UITabBarController 添加控制器的方式有两种

    //添加单个子控制器
    - (void)addChildViewController:(UIViewController *)childController;
    
    //设置子控制器数组
    @property(nonatomic,copy) NSArray *viewControllers;
    
    • UITabBar
      • 如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件,示例如下:
    图片 11.png

    相关文章

      网友评论

          本文标题:iOS 11:完善通讯录、block讲解、数据存储

          本文链接:https://www.haomeiwen.com/subject/lovplttx.html