ios - 获取 UIActionSheet 下的 UIWindow

标签 ios uiactionsheet uiwindow

我试图在当前的 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/

相关文章:

ios - 如何确保在 animateWithDuration() 中调用完成

ios - 在 iPad 上显示来自 ActionSheet 的 ImagePickerController

ios - 半透明 modalViewController

iphone - 如何使用 UIApplication 获取我的 UIWindow?

iOS:如何从我的应用程序中打开 Facebook 应用程序中的特定帖子?

ios - 使用 NSURLSession 使用原始正文发布请求

ios - 用于实时消息传递的 WKExtension 状态和 sendMessage

objective-c - 社交操作表(类似于 iOS 6)

ios - 更改 rootViewController 导致奇怪的行为

ios - iPhone 和 iPad 设备之间的 UIWindow 方向不一致?