Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获取UIActionSheet下的UIWindow_Ios_Uiactionsheet_Uiwindow - Fatal编程技术网

Ios 获取UIActionSheet下的UIWindow

Ios 获取UIActionSheet下的UIWindow,ios,uiactionsheet,uiwindow,Ios,Uiactionsheet,Uiwindow,我试图在当前UIViewController的基础上呈现一个新的UIViewController。 以下是创建所需效果的代码行: LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; UIViewController *rootController = [[[UIApplication sharedApp

我试图在当前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仍然是关键窗口。因此,LoginViewController不在顶部(当我尝试调试时,rootController为null)

我的问题是:我是否可以找到UIActionSheet下的UIWindow并从中获得根控制器,或者当用户选择注销操作并仅在执行上述代码时,我是否可以以编程方式关闭UIActionSheet


提前谢谢你

您可以使用以下代码访问窗口:

UIWindow* window = [[UIApplication sharedApplication] keyWindow];

只是遇到了同样的问题,并找到了解决办法。您只需浏览所有应用程序窗口,就可以得到一个windowLevel等于
UIWindowLevelNormal
的窗口

当然,只有当你的应用程序中有一个普通窗口时,这项功能才能正常工作。如果有多个窗口,您应该有自己的规则来检测正确的窗口


希望这会有所帮助。

埃里克的答案是最可靠的解决方案。请注意,当存在“动作表”时,不能添加/设置视图动画。如果不参考实际行动表,将您的控制员设置为代表,并且不知道何时解散该表,您就不知道何时解散该行动表。这只是供参考,因为这些都是我目前遇到的问题。

目前,我在展示UIActionSheet之前将rootController保存为变量,但我认为应该有更好的方法。你的应用程序代理难道没有
窗口
属性吗?这将是应用程序的主窗口。您阅读了问题吗?OP表示
keyWindow
正在提供操作表窗口。这就是问题的关键所在。顺便说一句,
[[UIApplication sharedApplication]keyWindow]
在iOS<7中运行良好。浏览窗口并找到具有
UIWindowLevelNormal
的窗口,非常感谢!)