我面临新的UINavigationController
窗口坐标作为窗口rootViewController
的问题,所以我创建了一个简单的示例项目,它也会重现它。
我使用带有以下操作的按钮的初始ViewController
启动应用程序:
- (IBAction)buttonTapped:(id)sender {
[[[UIAlertView alloc] initWithTitle:@"" message:@"New VC in 3 seconds" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
[self performSelector:@selector(delayCall) withObject:nil afterDelay:3];
}
- (void)delayCall {
NewViewController *nvc = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:nvc];
[[UIApplication sharedApplication].keyWindow setRootViewController:nav];
}
NewViewController
处于横向模式,但如果在更改窗口的UIAlertView
之前显示rootViewController
并且未被解除,则会显示在下面的屏幕截图中。
如果我在更改AlertView
之前未显示提醒视图或已关闭rootViewController
,则新的ViewController
会正常显示。
有什么办法可以防止这种情况发生吗?切换rootViewController
并显示AlertView
是我们正在创建的更大应用的一部分。不幸的是我们现在无法改变它,因此我们必须为此流程本身找到一些解决方法。