您的位置:首页 > 移动开发

IOS开发笔记(七)---对iOS多视图开发的补充(针对XCode4.2开发环境,Empty Application没有XIB/Storyboard文件的问题)

2012-08-20 16:39 796 查看
昨天参照书中的例子,回到家后开始实现示例中的代码.
发现XCode4.2中没有Window Base Application这一选项.使用Empty Application没有主界面的Storyboard文件.
于是打开google,发现Jeroen Trappers有一篇文章有详细的解决方法.
地址:http://www.trappers.tk/site/2011/06/16/mainwindow-xib/

我的看法是(不一定准确):AppDelegate是个代理类,起类似与window编程下的WNDPROC函数.
与其配合的是UIApplication.
在没有XIB文件的情况下,是通过程序的方式加载UIApplication的一个实例完成框架的建立的.
为了从XIB文件中加载,我们就要自己创建一个XIB文件,这是首先的问题.
如何将XIB文件和AppDelegate的类关联是下面的问题.

我们知道,AppDelegate需要一个UIApplition实例,这个事例保存所有XIB上元素的拷贝.所以File's Owner的类名我们要改为UIApplicaion
同时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的类



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



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



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



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



6.将该object的类名修改为文件中AppDelegate的类名(同时还可以给object命名下Label)



7.拖放一个Window到左边



8. 在xAppDelegate的h文件中,给window的属性加上IBOutlet
@interface DemoAppDelegate :
UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) IBOutlet UIWindow *window;
@end


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





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



11. 在xAppDelegate.m文件中,将
- (BOOL) application:didFinishLaunchingWithOptions:


这个方法全部注释掉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐