我想以模态的方式在当前显示的视图控制器上方显示一个UIWebview。弹出webview的代码位于静态库中,不知道它所在的应用程序的视图控制器层次结构。下面的代码适用于我的测试案例,但不确定是否适用于所有可能的视图控制器层次结构。
UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
UIViewController *presentedVC = [rootViewController presentedViewController];
if (presentedVC) {
// We have a modally displayed viewcontroller on top of rootViewController.
if (!presentedVC.isBeingPresented) {
[presentedVC presentViewController:vc animated:YES completion:^{
//
}];
} else {
rootViewController presentViewController:vc animated:YES completion:^{
//
}];
}
presentedViewController是否总是给出当前可见的视图控制器?
makeKeyAndVisisble
的当前可见窗口。要获取当前呈现的视图控制器,这完全取决于你的层次结构。如果你有一个模态屏幕,那就是它了;如果没有,并且你有导航控制器作为根,你就必须查看堆栈的顶部。我认为,鉴于设置导航层的方式有很多种,找到顶部视图控制器可能会相当困难。 - feliun