iOS 10:通讯录的创建

导航条

  • 导航条的内容由栈顶控制器的navigationItem属性决定,而不是由父控制器决定。
  • 以后只要看到Item,一般都是苹果提供的模型,不能直接更改模型对应的控件,否则将会变得很乱。而模型提供了几个接口,可以让开发者自定义,定制自己的导航条。
  • UINavigationItem、UIBarButtonItem
  • MVC思想:不把控件展示给用户;更改模型数据,然后在控件上面展示。

控制器view的生命周期

  • 附上图片


    iOS 10:通讯录的创建_第1张图片
    生命周期方法.png
  • viewWillUnload、viewDidUnload。view销毁时,由系统自动去管理调用上面的方法。

通讯录

  • 学习目的
    • 1.控制器的跳转
    • 2.控制器之间传值
    • 3.数据存储
  • 项目框架:导航控制器,始终贯穿着子控制器。
  • 界面个数:4个。
  • 判断UITextField中text是否有值的时候,不要这样写:text == "" 或者 text == nil,应该判断text.length == 0
  • 编写登录界面
    • 搭建界面
    • 实现业务逻辑
    • 实现登录功能

segue

  • storyboard上每一根用来跳转的线,都是一个UIStoryboardSegue对象
  • 3个属性
    • identifier
    • sourceViewController
    • destinationViewController
  • 自动型segue,直接由控件 ——> 目标控制器,不需要做任何判断
  • 手动型segue,需要作出判断
    • 1.脱线:来源控制器 ——> 目标控制器
    • 2.设置标识符 identifier
    • 3.perform 方法执行segue

第三方框架HUD

  • MBProcessHUD:类似于QQ登录切换时候中间过渡的界面
  • 使用方便,包含动画,提高了用户体验
  • 几个方法:
    • showError:
    • showMessage:
    • hideHUD:

数据传递

数据顺传
  • 数据传递,就好比买卖双方,一方需要,一方拥有,然后将商品传递
  • 跳转函数:performSegueWithIdentifer:
  • 跳转前的准备函数:prepareForSegue:。做一些数据传递的工作
  • 步骤:
    • 1.performSegueWithIdentifer:
    • 2.创建UIStoryboardSegue
    • 3.设置sourceViewController
    • 4.设置destinationViewController
    • 5.执行prepareForSegue:,做些准备工作,进行传值。
    • 6.[segue perform]
    • 7.判断segue的类型,如果是push,拿到导航控制器并push
数据逆传
  • 不能按照数据顺传的方式,进行逆传,因为目标控制器拿不到segue ——> 造成了目标控制器拿不到来源控制器 ——> 不能像数据顺传的方式进行。
  • 需要在目标控制器中声明sourceViewController对象,然后在sourceViewController传值的prepareForSegue:中,将self 赋给目标控制器中的sourceViewController对象。
  • 这样在目标控制器中就拥有了sourceViewController对象,进行数据的传递。

代码解耦

  • 上面的解决方法耦合性比较强,文件类之间相互包含,谁也离不开谁,可以使用代理方法去解耦。
  • 通过代理拿到接收方。接收方想要发送方的数据,监听发送方发生的变化,故需要设置发送方的代理为接收方。
  • 在接收方中,因为有segue对象,可以获取到发送方对象,然后设置发送方的代理为自身,并实现发送方代理的方法。

tips

  • 进入编辑条目的时候,自动将鼠标定位至第一个要输入的UITextFied,并弹出键盘,提高用户体验。[textField becomeFirstField];
  • 项目分组:附上图
iOS 10:通讯录的创建_第2张图片
双击屏幕中心可以满屏播放.png
  • 表格最好在数据没有的时候不需要分割线,有数据的时候cell有分割线,故需要手动将多余的分割线去掉。
[self.tableView.tableFooterView = [[UIView alloc] init];

你可能感兴趣的:(iOS 10:通讯录的创建)