控制器的创建方式:
1)直接利用代码alloc init创建
2)使用主动的方式加载storyboard
3)指定xib文件来创建
注:如果项目中设置了主窗口,则不用代码也可以加载storyboard(系统自动生成的),使用纯项目则需要手动添加代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds] ];
self.window.backgroundColor = [UIColor whiteColor];
// 第一种创建控制器的方法,直接创建但是加载UI控件很困难
MJOneViewController *one = [[MJOneViewController alloc] init];
one.view.backgroundColor = [UIColor blueColor];
self.window.rootViewController = one;
// 第二种创建控制器的方法,加载storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Two" bundle:nil];
// 1. 创建storyboard里箭头所指的控制器(灰色)
UIViewController *vc1 = [storyboard instantiateInitialViewController];
self.window.rootViewController = vc1;
// 2. 创建storyboard里第二个控制器(无箭头所指的)
MJTwoViewController *vc2 = [storyboard instantiateViewControllerWithIdentifier:@"pink"];
self.window.rootViewController = vc2;
// 第三种创建控制器的方法,加载xib文件(很久之前的方法了)
MJThreeViewController *vc3 = [[MJThreeViewController alloc] initWithNibName:@"MJThree2356" bundle:nil];
self.window.rootViewController = vc3;
[self.window makeKeyAndVisible];
return YES;
}
指定xib文件创建控制器部分的知识点:
1)UIViewController控制器的 initWithNibName: bundle: 方法用来加载对应的xib控制器文件;
2)首先需要在xib文件中拖一个UIView,如果没有则报错,如下错误:
was unable to load a nib named "MJThree2356"
3)然后将“File's Owner”的class属性设置为对应的控制器类,再右键“File's Owner”选择view为对应的UIView连线,
(未连线的UIView相当于无用的),如下图所示:
注:如果不与view连线,则提示如下错误:
loaded the "MJThree2356" nib but the view outlet was not set