UIViewController
/*知识点总结:
1)创建视图控制器类,设置window的根视图控制器
2)视图控制器跳转的过程
3)找window的四种方法
*/
APPDelegate.m
//设置根视图控制器
// UIViewController视图控制器
//视图的管理器,用来管理一个页面视图
//使用:新建一个视图控制器类,继承自UIViewController
// 1,导入视图控制器头文件
// 2,创建视图控制器对象
ViewController *viewController = [[ViewController alloc] init];
// 3,将视图控制器对象设置为window的根视图控制器
self.window.rootViewController= viewController;
//设置根视图控制器会调用视图控制器中的viewDidLoad方法
//代码执行的顺序是:当执行到设置window根视图控制器时,会跳到视图控制器里的viewDidLoad方法执行,然后再跳回这个入口方法继续执行
视图控制器跳转
// 1,导入头文件
// 2,创建视图控制器对象
ViewControllerTwo *vc = [[ViewControllerTwo alloc] init];
// 3,找window,不能重新创建window,因为一个应用中只能有一个window
UIWindow *window =self.view.window;
// 4,设置为window的根视图控制器
window.rootViewController= vc;
//viewDidLoad视图已经加载
- (void)viewDidLoad {
NSLog(@"viewDidLoad");
//self本类(ViewController)的对象
//super父类(UIViewController)的对象
//先加载父类视图,确保子类视图顺利加载
[super viewDidLoad];
//视图控制器在创建时会自动生成一个view,作为视图控制器的一个自带属性
//设置背景颜色
self.view.backgroundColor= [UIColorblueColor];
}
//系统的触摸方法,当手指触摸到屏幕时调用
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
//1.导入头文件delegate
//2.创建视图控制器对象
ViewControllerTwo *vc = [[ViewControllerTwo alloc] init];
//3.找window,不能重新创建window,因为一个只能有一个window
UIWindow *window =self.view.window;
//4.设置为window为的根视图控制器
window.rootViewController= vc;
//上一句代码把window的根视图控制器换掉了,所以现在self.view已经不在window上了,所以用self.view.window找不到window
//[self findWindow];
}
//找window
-(void)findWindow {
//方法一:
UIWindow *window1 =self.view.window;
//方法二(常用):
UIWindow*window2 = [UIApplicationsharedApplication].keyWindow;
// UIWindow *window2 = [[UIApplication sharedApplication] keyWindow];
//方法三:
UIWindow *window3 = [UIApplication sharedApplication].windows[0];
//方法四(最安全):
//找到应用程序
UIApplication*app = [UIApplication sharedApplication];
//找到应用程序的入口类
AppDelegate*delegate = app.delegate;
//找到入口类中的属性window
UIWindow *window4 = delegate.window;
NSLog(@"window1 = %@",window1);
NSLog(@"window2 = %@",window2);
NSLog(@"window3 = %@",window3);
NSLog(@"window4 = %@",window4);
}