昨天参照书中的例子,回到家后开始实现示例中的代码.
发现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:
这个方法全部注释掉
以上在Lion 10.7.2 XCode4.2中测试通过.
分享到:
相关推荐
Snow Leopard 上最后一个版本的xcode 网络上已经没有其他可下载的资源点 xcode_4.2_and_ios_5_sdk_for_snow_leopard.dmg xcode_4.2_and_ios_5_sdk_for_lion.dmg md5:4e0efebe696d31b46ab4b117015515a5
Xcode4.2教程(斯坦福大学iOS开发教程3_Walkthrough iOS 5.pdf) 适用于4.2以上版本的Xcode
iOS5开发基础教程 最新版本 xcode4.2,让你不再为新老版本界面而烦恼,目前只能找到英文版本了。
XCode4.2中使用Empty Application模板替代旧的Window Based
xib2Storyboard - 将Xcode .xib转换为.storyboard文件的工具
xcode4.2 ios5sdk snowleopard
OpenGL ES 从零开始系列教程的工程模板,XCode4.2,路径为/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/
xcode 4.2 and iOS5 sdk torrent 文件
从零开始学习OpenGL ES系列教程的工程模板,XCode4.2,路径为/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlusgIns/iPhoneOS Build System Support.xcplugin/Contents/MacOS/”目录下替换原有文件 4、把“iphoneentitlements30”拷贝到“/...
xcode 4.2 and IOS 5.0 DP
IOS应用源码之【应用】电子书阅读器 - iOS PDF Reader(Xcode 4.2 and iOS 5).rar
XCode 4.2 & iOS5 SDK
Xcode6.1创建仅xib文件无storyboard的hello world应用
XCODE4.2写的计算器,只有加减乘除,有优先级,可以计算表达式的值
Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
xcode7 空工程Empty-Application
xib2Storyboard•xib2Storyboard是一个方便的工具,可以轻松地将.xib文件转换为.storyboard,而无需麻烦地手动复制视图,从而避免了麻烦,并且可能会限制流程。 维护所有出口,xib2Storyboard•xib2Storyboard是一个...
虚拟机搭建苹果开发环境工具集。 vmware8&keymaker电驴下载 OSX10.7 Lion种子文件 xcode4.2 for lion 种子文件 HJMace引导光盘 Darwin3.1 Vmtools驱动。
利用这个torrent文件,使用迅雷进行下载xcode_4.2_and_ios_5_sdk_for_snow_leopard.dmg , 在虚拟机的苹果电脑中进行安装xcode