我试图在当前的 UIViewController 之上呈现一个新的 UIViewController。 这是创建所需效果的代码行:
LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
UIViewController *rootController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
[rootController presentViewController:loginViewController animated:YES completion:nil];
问题是我添加了一个 UIActionSheet,它要求用户确认所需的操作(即注销)。当用户确认我运行上面提到的和平代码的操作时,但 UIActionSheet 仍然是 keyWindow。因此,LoginViewController 未显示在顶部(当我尝试调试时,rootController 为空)。
我的问题是:我能否以某种方式找到 UIActionSheet 下的 UIWindow 并从那里获得根 Controller ,或者我可以在用户选择注销操作时以编程方式关闭 UIActionSheet,然后才执行上述代码?
提前致谢!
最佳答案
刚遇到同样的问题,已经找到解决方法。您可以遍历所有应用程序窗口并获得 windowLevel 等于 UIWindowLevelNormal
的窗口。
当然,只有当您的应用程序中有一个普通窗口时,这才能正常工作。如果你有多个窗口,你应该有自己的规则来检测正确的窗口。
希望这会有所帮助。
关于ios - 获取 UIActionSheet 下的 UIWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19862109/