一、知识点总结
(1)其实,每当显示一个新界面时,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,UIViewController负责管理这个UIView
UIViewController就是UIView的大管家,负责创建、显示、销毁UIView,负责监听UIView内部的事件,负责处理UIView与用户的交互
UIViewController内部有个UIView属性,就是它负责管理的UIView对象 :
@property(nonatomic,retain) UIView*view;
(2)UIView只负责对数据的展示,采集用户的输入、监听用户的事件等。
其他的操作比如:每个UIView的创建、销毁、用户触发某个事件后的事件处理程序等这些都交给UIViewController来处理。
(3)综合分析,可以得出程序的简单运行流程:
-1.读取Main.storyboard文件
-2.创建箭头所指的CZViewController对象
-3.根据storyboard文件中描述创建CZViewController的UIView对象
-4.将UIView对象显示到用户眼前
(4)
-1.IBAction和IBOutlet究竟有什么作用?
IBAction相当于void,但是能拖线。IBOutlet保证属性可以拖线。
-2.还有其他拖线方式么?
点击控件右键连线
按住control拖线(从控件到代码、从代码到控件)
属性与方法代码写好后,打开ViewControllerScene,选择ViewController右键将对应的方法拖到控件上。
-3.Storyboard文件中箭头的含义?
程序的入口.新建一个ViewController后,设置IsInitial ViewController属性来让当前ViewController为默认启动项。
-4.如何更换storyboard文件?
项目 -> General->DeploymentInfo-> 改变Main.storyboard
-5.如何让文本框只能输入数字?
调出数字键盘(Number Pad)
-6.如何退出键盘?
开发人员自己写代码退出。
(1.[第一响应者 resignFirstResponder];2. [self.view endEditting:YES])
-7.CompanyIdentifier(公司的唯一标识)和BundleIdentifier(app的唯一标识)的作用
BundleIdentifier对于中文都是-
-9.模拟器还有哪些功能?
查看模拟器的菜单。
window 菜单调整大小
调试 设置位置
硬件 -> 设备 来切换模拟器、旋转等
回到主界面、退出某个程序、卸载某个程序
(5)
—IBAction
从返回值角度上看,作用相当于void
只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线
—IBOutlet
只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线
二、图形解析
(1)设置程序启动时加载的storyboard
如下图所示:
(2)设置UITextField的键盘类型:如下图
三、常见问题:
1.拖线后@property代码、事件处理方法被删除了。
错误信息:this class is not key value coding-compliant for thekey resultLabel.
2.引用控件的属性、事件处理方法都写在.m文件的“类扩展”,保证封装性。
3.
resignFirstResponder
当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘
endEditing
只要调用这个方法的控件内部存在第一响应者,里面所有的子控件就都能分别退出键盘