因為在參考文章里已經有詳細的图文介紹,所以這裡不再重复,只想提出几点注意事项:
1、ios Appliction是先从UIAppliction开始的,而UIApplication对象建立之后,UIApplication又委托AppDelegate进行具体的UI初始化工作,UI的初始化工作又由AppDelegate的window对象开始,当然,window对象的初始化工作其实是交由rootViewController进行的。即UIApplication -> AppDelegate -> window
2、参考文章是从Empty Project开始的,比对之前的windowBased Template,就发现,少了一个Mainwindow.xib文件,亦即是主要的用户界面,所以要先新建立一个Mainwindow.xib文件,获得一个界面。比对旧的WindowBased Template发现,File‘s Owner之类别需要重新设为上面提到的UIApplication,界面中没有AppDelegate对象,所以要加入一个Object并将其类别改为我们的AppDelegate类别,然后将File‘s Owner的delegate设定为AppDelegate,而AppDelegate.h中附带的window 不是IBOutlet对象,因此要先将其变为IBOutlet对象,再和MainWindow.xib中的window对象要关联起来。这样就基本大功告成了,但实际上,还必须在TARGETS 的Summary中,将main interface 设定为MainWindow!只有这样,你在IB中加入的东西才能正确显示出来。
3、而AppDelegate.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
}
这一句代码可以remark处理(实际上不影响)。保留这一句代码,而不将main interface 设定为MainWindow,这一句其实可以用于用代码创建自己的UI,改为以下代码,就能显示自己的label:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// 用代码建立自己的label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(160, 230, 60, 40)];
[label setText:@"hello"];
[label setTextColor:[UIColor redColor]];
[self.window addSubview:label];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
实际上,你 即使不进行1和2的工作, 你一样可以用代码构建自己的UI!!
4、其实根据这个原理,亦可以将其他的Application Template改造,不过用Empty Project Template的好处是它在创建时,有core data选项。