WXHL 学习文章连载 (十)

来源:互联网 发布:php获取ip地理位置 编辑:程序博客网 时间:2024/06/08 19:54
            终于来了个真正厉害一点儿的讲师,讲的挺不错,只可惜很多以前该讲的东西,之前的老师没讲到,当老师说道某些知识点的时候,我们一脸茫然,他说初级应该讲过的。。。无奈之下,老师只好在备忘录上记下我们没讲过的东西,有时间再做补充。不过总体来说还不错、、、、、

   自习了一点数据存储方面的知识,来回顾一下。。

一、三种本地存储方式

一)"plist文件存储"

1.字符串 数组 字典 可以直接存储数据在一个文件

2.不是所有对象都可以保存到plist文件中,要有实现writeFile方法才可以

3.SimPholders2快速打开沙盒目录

              


二)"用户偏好设置"

1.ios中有个NSUserDefaults对象有可保存数据,我们称为用户偏好设置

2.通过[NSUserDefaults standardUserDefaults]可以获取用户偏好设置对象,保存字符串 布尔值 int等数据

3.保存数据时,一定要调用synchronize,因为数据要及时保存到沙盒的文件中

4.用户偏好设置数据的获取,更改,删除



三)"NSKeyedArchiver归档"

/*什么叫归档 归档就是把数据保存到一个文件中*/

1.使用NSKeyedArchiver可以将NSArray NSDictiony NSString等对象归档到一个文件

2.只有实现了NSCoding协议的对象才可使用NSKeyedArchiver进行归档


3.将模型对象保存到一个文件时,对象要遵守NSCoding协议,并实现NSKeyedArchiverencodeWithCoder方法,

4.从归档文件里读取对象时要实现NSCodinginitWithCoder方法

5.ios中,控制器,控件都继承NSCoding,storyboard/xib都是使用NSKeyedArchiver进行归档的 

--------------------------案---例---------------------------
简单的个人通讯录。

一、"【登录界面】"

1.使用UIStoryboardSegue对象

(1)storyboard中,可以通过连线完成多个界面间的跳转,每一连线我们称为segue

(2)storyboard中的segue连线有两种,一是自动跳转、二是手动跳转

(3)使用代码跳转页面手动segue -->[self performSegueWithIdentifier:@"contactSegue" sender:nil];


2.第三方MBProgressHUD的使用,给用户一个友好的提示


3.控制器的数据传递

(1在控制器的【-(void)prepareForSegue:sender:】的方法中获取目标控制器

(2设置目标控制器的属性,可以实现数据的传递


4.文件框文字改变的监听

方法1 使用通知中心

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.passwordField];


方法2 往文本输入框添加事件

addTarget: action: forControlEvents:UIControlEventEditingChanged


方法3 storybaord连线



5.记住密码与自动登录逻辑

(1)记住密码为关闭的情况下,如果自动登录为开启状态,应该关闭

(2)如果自动登录为关闭状态,记住密码必需为开启状态


二、"【添加联系人页面】"

1.数据的逆向传递

(1)如果想向上一个控制器传递数据,可以使用代理的方法

(2)向上个控制器传递数据时,可以传递字符串或者模型


2.表格的局部刷新,性能更好,使用【self.tableView insertRowsAtIndexPaths:withRowAnimation:】方法


三、"【编辑联系人】"

1.使用代理的方法通知上一个控制器联系个编辑完成,并保存

2.刷新数据使用局部刷新【[self.tableView reloadRowsAtIndexPaths:withRowAnimation


  

四、完善通讯录的登录页面数据存储与联系人信息存储

1.登录页面使用 "用户偏好" 来存储数据

2.联系人页面使用 "归档" 来存储数据

              

              


五、删除联系人/随机添加联系人

1.掌握表格的编辑状态

*表格有个editing属性,可以打开cell的删除或者添加状态

*指定表格的编辑状态,可以实现代理方法

/**

 表格的编辑状态

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

  //第一行返回的编辑状态为添加

  if (indexPath.row == 0) {

      return UITableViewCellEditingStyleInsert;

  }

  //其它行返回的编辑状态为删除

  return UITableViewCellEditingStyleDelete;

}

*/


*如果要监听表格绿色与红色按钮的点击,只要实现一个代理方法即可,如下

/*

 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    if (editingStyle == UITableViewCellEditingStyleInsert) {//添加

        

    }else{//删除

        

    }

}

 */



六、实现联系人表格cell的分隔线

(1)系统的分隔线不好看,去除表格自带的分隔线

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

(2)自定义cell,在awakeFromNib方法中添加分隔线

(3)layoutsubviews中设置分隔线的frm

              

七、注销使用UIActionSheet  

-------------------部分代码以及运行结果--------------        


 
图片

图片

图片

图片


图片

图片

图片

图片

图片

图片


0 0
原创粉丝点击