对iOS多视图开发的补充(针对XCode4.2开发环境,Empty Application没有...

昨天参照书中的例子,回到家后开始实现示例中的代码.html

发现XCode4.2中没有Window Base Application这一选项.使用Empty Application没有主界面的Storyboard文件.ios

因而打开google,发现Jeroen Trappers有一篇文章有详细的解决方法.编程

地址:http://www.trappers.tk/site/2011/06/16/mainwindow-xib/app

 

个人见解是(不必定准确):AppDelegate是个代理类,起相似与window编程下的WNDPROC函数.框架

与其配合的是UIApplication.函数

在没有XIB文件的状况下,是经过程序的方式加载UIApplication的一个实例完成框架的创建的.学习

为了从XIB文件中加载,咱们就要本身建立一个XIB文件,这是首先的问题.测试

如何将XIB文件和AppDelegate的类关联是下面的问题.ui

 

咱们知道,AppDelegate须要一个UIApplition实例,这个事例保存全部XIB上元素的拷贝.因此File's Owner的类名咱们要改成UIApplicaiongoogle

同时UIApplicaion有一个插座IBOutlet恰好是咱们AppDelegate能够对接的.类型UIApplicationDelegate

因而咱们首先拖放一个Object,修改类名为咱们的xAppDelegate,这样就能够将这个Object和UIApplication中的delegate连接了.

delegate

The delegate of the application object.

@property(nonatomic, assign) id<UIApplicationDelegate> delegate

Discussion

The delegate must adopt the UIApplicationDelegate formal protocol. UIApplication assigns and does not retain the delegate.

Availability
  • Available in iOS 2.0 and later.
Declared In UIApplication.h

 

源文件中有UIWindow的变量 window ,咱们须要在上面添加的Object(类名xAppDelegate)里面建立一个Window,而后把变量加上IBOutlet后进行连接.

这样就完成了XIB中AppDelegate和它下面Window的两个对象从XIB到代码之间的连接.

 

但是此时程序的入口并无改变,文章中推荐的方式是在工程配置中的Main Interface修改成一个XIB文件名,其实就是在程序中加载XIB文件做为入口.

一样的功能,也许咱们在代码中也能够实现.相似与initWithNibName的方法,暂时我没有实现.

 

还有就是注释掉了一个初始化的函数:- (BOOL) application:didFinishLaunchingWithOptions: 这个方法中的操做是跟咱们从XIB加载相冲突的.

 

经过以上几个步骤,咱们就能够从Empty Application中自定义的加载一个XIB文件了.

学习到这里,让我对整个XIB的工做方式和UIApplication的工做原理又有了更深一步的了解.

对于之后的多视图学习很是的有帮助.

 

以上操做的详细步骤以下,顺便复习一下:

1.建立Empty application,此时项目中只有一个AppDelegate的类

Start with Empty Application template

2.新建文件,选择User Interface下的Empty 命名为MainWindow

Add Empty Interface Builder document

3.打开新建的MainWindow.xib文件

The empty design surface of MainWindow.xib

 

4.将File's Owner的类名修改成UIApplication

Change class of File's Owner to UIApplication

5. 在Library中拖放一个Object到图下的位置

Add Object to the document

6.将该object的类名修改成文件中AppDelegate的类名(同时还能够给object命名下Label)

Change class of the object to xAppDelegate

7.拖放一个Window到左边

Add a window to the document

8. 在xAppDelegate的h文件中,给window的属性加上IBOutlet

@interface  DemoAppDelegate :
      UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) IBOutlet UIWindow *window;
@end

9.将File's Owner 和 拖放的Object按照如下方式链接

Link the application delegate

 

Link the window outlet of the app delegate

 

10.在项目属性中,把Main Interface修改为你的xib文件名MainWindow

Set the Main Interface to MainWindow

11. 在xAppDelegate.m文件中,将

- (BOOL) application:didFinishLaunchingWithOptions:

 

这个方法所有注释掉

 

以上在Lion 10.7.2 XCode4.2中测试经过.

--------------------- 我能够操纵冰冷的代码,但我操纵不了个人人生......
相关文章
相关标签/搜索