IOSday01 连线和程序标识

新建项目的常见属性

![](/Users/yangzh/Desktop/课堂笔记 /images/Snip20150709_4副本.png)

storyboard文件的认识

  • 用于保存软件界面
    • 存储一个或者多个软件界面
      • 默认会加载箭头指向的界面
      • 程序启动到底加载哪个Storyboard由配置文件决定

控制器

  • 什么是控制器:
    * 所有继承于UIViewController的类都称之为控制器
    • 控制器的作用:
      • 管理UI界面(负责管理UI界面的创建和一些事件的处理)
    • 控制器注意点
      • UI界面是可以和它与之对应的控制器进行连线的
      • 可以通过连线的方式, 让UI界面上的元素和控制器中的代码产生一定的关系

如何给一个新建的UI界面指定控制器

  • IBAction

    • 可以作为方法的返回值类型, 只要方法的返回值类型是IBAction, 就可以和控制器与之对应的界面连线
    • 只有继承于UIControl的类才能与IBAction连线
  • IBAction几种连线方式

    • 1.从"控制器"往"Storyboard"连线
    • 2.从"Storyboard"往"控制器"连线
    • 3.直接在"Storyboard"中往"Storyboard"上的界面顶部连线
    • 4.直接在"Storyboard"中往"Storyboard"上的层级结构条连线
    • 5.不用先定义方法, 直接从"Storyboard"往"控制器"连线
  • IBAction连线的注意点:

    • 在Storyboard中拷贝元素的时候需要注意
      • 拷贝的同时会将以前的连线一起拷贝
      • 一个方法可以很多个控件关联
      • 一个控件可以和很多方法进行连线
    • 如果将按钮关联的方法删除, 运行之后会报一个经典错误
    ### reason: '-[ViewController redBtnClick]: unrecognized selector sent to instance 0x7fb4aa618e50'
    
    • IBAction只能作为方法的返回值
      • IBAction相当于void

IBOutlet

+ 可以用于修饰属性
+ 可以和任何继承于UIView的控件进行连线
  • IBOutlet的几种连线方式

    • 1.从"控制器"往"Storyboard"连线
    • 2.从"Storyboard"往"控制器"连线
    • 3.直接在"Storyboard"中往"Storyboard"上的界面顶部连线
    • 4.直接在"Storyboard"中往"Storyboard"上的工具条连线
    • 5.不用先定义属性, 直接从"Storyboard"往"控制器"连线
  • IBOutlet注意点:

    • 1.一个控件可以关联多个属性
    • 2.一个属性不可以关联多个控件
    • 3.在进行属性连线的时候, Xcode会自动帮我们进行类型检测, 如果类型不匹配那么不能连线
    • 4.如果将属性和控件连线之后又将属性删除了, 那么只要程序运行就会报一个经典错误

    [<ViewController 0x7fe9d9f1a5d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key lable.'

  • IBOutlet和IBAction为什么以IB开头

    • 因为以前的Xcode版本中Xcode和interface build分别是两个工具, IB取自于interface build两个单词的首字母
  • 类扩展的作用

    • 为了保证类的封装性, 一般情况下会将类属性和方法的声明写到类扩展中

类扩展和分类的区别

  • 1.匿名分类没有名字, 分类有名称
  • 2.匿名分类不需要有对应的实现, 而分类需要有对应的实现
  • 3.匿名分类可以声明属性, 也可以声明方法, 分类只能声明方法

UIView

  • 所有的控件最终都继承自UIView
    • 苹果将控件的共同属性都抽取到父类UIView中
    • 每个控件都是个容器,能容纳其他控件
      • 注意: 在storyboard中并不一定能够给某些控件添加子控件, 但是在代码中都是可以添加的
  • 每一个控制器(UIViewController)内部都有个默认的UIView属性
    • 这个UIView就是当前控制器对应的界面的view
    • 控制器中管理的其他所有控件都是这个view的子控件(直接或者间接)
posted @ 2015-07-29 00:02  daizeng3344  阅读(208)  评论(0编辑  收藏  举报