关于设计模式mvc是最基本的;mvp是数据绑定到页面,单向绑定;mvvm是数据绑定到页面页面也绑定到数据,双向绑定的。
ViewController的生命周期:
viewWillAppear:少量的初始化话工作。
viewDidDisappear:清理工作。
ViewController的几个跳转,有用storyboard的,有用xib的,有直接代码写的界面的:
- (void) tryNibName {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController * rootVC = [[UIViewController alloc] initWithNibName:@"rootVC" bundle:nil];
self.window.rootViewController = rootVC;
[self.window makeKeyAndVisible];
}
- (void) tryNibOfUserVCName {
// xib can be MyViewController or MyView
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController * rootVC = [[MyViewController alloc] init];
self.window.rootViewController = rootVC;
[self.window makeKeyAndVisible];
}
- (void) tryNibOfVCName {
// UI prefix in class name means system class, which will bypass xib lookup!
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController * rootVC = [[UIViewController alloc] init];
self.window.rootViewController = rootVC;
[self.window makeKeyAndVisible];
}
- (void) tryInfo_plist_storyboard {
// no code, just update Info.plist to set "Main storyboard basename"
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self tryInfo_plist_storyboard];
// [self tryNibName];
// [self tryNibOfVCName];
// [self tryNibOfUserVCName];
return YES;
}
关于应用启动: