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
- 在Storyboard中拷贝元素的时候需要注意
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的子控件(直接或者间接)