💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 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生命周期的理解,及其工作机制。