转载自:http://www.cocoachina.com/iphonedev/sdk/2011/1001/3309.html
本文针对Cocoa Touch,Cocoa可能略有区别
首先说为什么不用Nib,其实也没什么太令人信服理由,大概就是以下几点吧
代码重用比较方便
用Interface Builder多多少少有丢三落四的毛病
感觉自己写出来的代码更有存在感一些
没事闲的
至于性能上是否有区别我还不太清楚,查了一会儿也没什么结果,如果各位对这方面有了解还请回复一下.
![](http://www.cocoachina.com/cms/uploads/allimg/111001/3292_111001125442_1.png)
进入正题,以下几步搞定MainWindow
删除Info.plist里面Main nib file base name这一条,或者把后面的MainWindow清空也行
main.m里有一句
int retVal = UIApplicationMain(argc, argv, nil, nil);
改成:
int retVal = UIApplicationMain(argc, argv, nil, @"YOUR_APPDELEGATE_CLASS");
如:
int retVal = UIApplicationMain(argc, argv, nil, @"TestAppDelegate");
XXXAppDelegate.m里面,删除原来的一些内容,添加类似如下代码,这里就不细说了,相信都能明白
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //一定要initWithFrame,否则不响应触摸事件
_mainTabBarController = [[MainTabBarController alloc] init];
_window.rootViewController = _mainTabBarController;
[_window makeKeyAndVisible];
return YES;
}
MainWindow搞定了,其他ViewController就比较简单了,可以重写init,也可以在viewDidLoad等方法里添加一些控件.创建ViewController就直接alloc init就行,不用管frame的问题.
没有了nib是不是感觉整个项目清爽了一些呢?不过要写的代码也变多了.