创建没有nib文件的App

本文针对Cocoa Touch,Cocoa可能略有区别

首先说为什么不用Nib,其实也没什么太令人信服理由,大概就是以下几点吧

  • 代码重用比较方便
  • 用Interface Builder多多少少有丢三落四的毛病
  • 感觉自己写出来的代码更有存在感一些
  • 没事闲的

至于性能上是否有区别我还不太清楚,查了一会儿也没什么结果,如果各位对这方面有了解还请回复一下.

进入正题,以下几步搞定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是不是感觉整个项目清爽了一些呢?不过要写的代码也变多了.
 
–以上–