UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow.
下面说下两个视图控制器之间的跳转,不包括使用导航控制器和模态的方法
在xib的情况下的页面跳转
//通过单例类UIApplication的实例对象的keyWindow来获得window
UIWindow * window = [UIApplication sharedApplication].keyWindow
//初始化即将跳转的视图控制器
MainViewController * mainVC = [[MainViewController alloc]init];
//通过设置window的根控制器,实现页面跳转
window.rootViewController = mainVC;
顺便提一下,另外两种找主window的方法,
1)//找到所有window, 最开始那个就是我们第一次添加的window
UIWindow * window = [[UIApplication sharedApplication].windows objectAtIndex:0];
2)//找到应用程序的代理对象
UIWindow * window = [[UIApplication sharedApplication].delegate window];
在Storyboard的情况下的页面跳转
第一种方法:选中第一个视图控制器,按住ctrl键拖线指向第二个视图控制器,选中Segue,在属性界面设置其Identifier.
[self performSegueWithIdentifier:@"Identifier" sender:self];
第二种方法:选中第二个视图控制器,在关联Class界面设置Storyboard ID.
// UIStoryboard * sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; //和[self storyboard]作用一样
//通过刚才设置的Storyboard ID获取视图控制器实例对象
//不要用alloc方法 不然会创建一个新的viewController,导致出现黑屏现象
MainViewController * mainVC = [[self storyboard] instantiateViewControllerWithIdentifier:@"mainVC_id"];
UIWindow * window = [UIApplication sharedApplication].keyWindow
window.rootViewController = mainVC;