### Xcode 4.2之前是有这个模板的,但Xcode 4.2之后的更新版本中就没有了此模板,综合来说模板的作用就是为我们编程的时候节省代码量的。
### 好了让我们开始自定义Window-based Application 模板吧!
一.首先选中一个空的模板:
![](https://box.kancloud.cn/2016-06-12_575cce78ec6f3.png)
### 选择空模板后的结果:
![](https://box.kancloud.cn/2016-06-12_575cce792110e.png)
2.由此可见,这里并既没有试图控制器(UIViewControl的子类)也没有主窗口(UIWindow),需要我们手动去创建:
(1)UIViewControl的子类:
![](https://box.kancloud.cn/2016-06-12_575cce794c848.png)
2)UIWindow :可以理解为一个容器,里面可以装很多UIView,通俗的来讲就是UIWindow就是一个画板,而UIView就是上面一幅幅美丽的图画。
![](https://box.kancloud.cn/2016-06-12_575cce7970f6c.png)
3)向UIWindow中添加视图控制器和委托类的控件:
![](https://box.kancloud.cn/2016-06-12_575cce7992e04.png)
4)到这里,前期工作就准备好了,哦.....还有一个非常重要的一点:刚才我们所托上去的
控件,它们的最初状态可都是来自NSObject类型啊,可别忘了修改它们的类,以确保得到其相应的功能。
![](https://box.kancloud.cn/2016-06-12_575cce79b8c4c.png)
File's Owner 可以看做是:程序代码与前台UI界面沟通(相互通信)的桥梁。
![](https://box.kancloud.cn/2016-06-12_575cce79d7108.png)
![](https://box.kancloud.cn/2016-06-12_575cce7a0338c.png)
5)下一步就要进行让人头疼的连线了,不过不用担心,只要理解了运行流程与委托机制就会明白。
可先把连线理解为赋值。
![](https://box.kancloud.cn/2016-06-12_575cce7a22f83.png)
6)由上图可看出 File's Owner 把自身的属性委托对象传给了Iphone0402 Test............. 到了
这里是最容易让人犯晕的时候,请听我一一道来:
首先讲一下委托机制:
每个iphone应用程序有且仅有一个UIApplication实例,UIApplication在后台处理事物,管理这整个程序的生命周期,在程序执行需要时UIApplication会调用被实例化好的委托。
### (Cocoa Touch 大部分都使用了委托,为UIApplication处理一些事情)
例:有一个Boss类和Employee类。Employee类中有一个干活的方法‘doit’ ,Boss将得到Employee类,去调用这个方法。
![](https://box.kancloud.cn/2016-06-12_575cce7a44562.png)
由此可以把委托机制简单理解为:自己的工作让别人去干。回到此例中Boss中并没有doit这个
干活的方法,而是得到了Meployee 类(通知其干活)调用doit()。
7)把视图控制器添加到File's Owner的rootVeiwControl(根视图控制器)上,也可以理解为将值赋给了rootVeiwControl,为显示图形做最后准备。
![](https://box.kancloud.cn/2016-06-12_575cce7a72217.png)
8)最后一步,虽然不是什么技术,但是,是最容易让人遗忘的的一步,没有它,界面将无法显示。
以下两种方法都可行:
![](https://box.kancloud.cn/2016-06-12_575cce7a8ee29.png)
![](https://box.kancloud.cn/2016-06-12_575cce7ab1caf.png)
这样模板就建好了,等一等,我们别忙着庆祝,模板都建好了,也得看一下效果啊,那好我们就用此模板写一个经典的输出吧。。。。。Hello World!
# 二.让我们回到子视图:添加一些小组件。
1)
![](https://box.kancloud.cn/2016-06-12_575cce7accce5.png)
![](https://box.kancloud.cn/2016-06-12_575cce7b00f7c.png)
2)向视图控制器.m文件中添加内容:
![](https://box.kancloud.cn/2016-06-12_575cce7b1f39a.png)
3)最后还剩下重要的一点,也是容易被忽视的:注释掉系统自动生成对操作不利的方法:
![](https://box.kancloud.cn/2016-06-12_575cce7b40c25.png)
(4)运行结果:
![](https://box.kancloud.cn/2016-06-12_575cce7b5cc00.png)
# 最后总结:
一路走过来,可能会让人产生疑问,就是这个模板的具体作用没体现出来,原因是,像此类简单的操作,别的模板也能完成,自己写模板是在浪费时间吗?
肯定不是,因为此模板多用于多个UIVeiw,或很复杂的图形创建,以后会用到,自己创建模板还可以加深对iphone生命周期的理解,及其工作机制。
- 前言
- (1) iphone开发,自定义Window-based Application 模板及委托运行机制
- (2) iphone 开发 表视图UITableView结构深层剖析
- (3) iphone 开发 从应用程序看UITableView的:分组,分区,索引,工作原理及其变换法则,plist文件数据定义规则
- (4) iphone 开发 自定义UITableViewCell的子类 ,轻松添加图片文本信息等
- (5) iphone 开发 在表视图(UITableView) 中利用UISearchBar实现数据的搜索,视图的多功能化
- (6) iphone 开发 真正理解委托(delegate)与数据源(data source)
- (7)---01 iphone 开发 数据传递 NSNotification 通知机制演示
- (7)---02 iphone 开发 数据传递 : 页面切换与数据的反向传递以及协议(protocol)作用的体现
- (8)---01 iphone 开发 大话分析导航栏NavigationController
- (9) iphone 开发 AppSettings , 系统setting与应用程序setting间的数据控制
- (10) iphone 开发 用户点击,触摸和手势识别 解析