警告:尝试在UISplitViewController上显示UIAlertController,其视图不在窗口层次结构中

时间:2016-12-25 17:06:11

标签: ios swift uikit uisplitviewcontroller uialertcontroller

与此问题类似的大多数问题中的问题是在viewDidAppear之前调用rootViewController。这不是原因。

此应用不使用NIB的故事板,所有操作都是程序化的。

应用窗口的UISplitViewControllerUINavigationController。拆分视图的视图控制器设置为两个UIAlertController s的数组。子视图控制器然后以模态方式呈现视图控制器。问题是,当视图控制器被模态呈现时,应用程序代表提供的window?.rootViewController?.present(alert, animated: true, completion: nil) 不会显示。它起作用了。

我如何尝试呈现:

Attempt to present UIAlertController on UISplitViewController whose view is not in the window hierarchy

我收到此错误:

// Utility function to avoid:
// Warning: Attempt to present * on * whose view is not in the window hierarchy!
func showAlertGlobally(_ alert: UIAlertController) {
    let alertWindow = UIWindow(frame: UIScreen.main.bounds)
    alertWindow.windowLevel = UIWindowLevelAlert
    alertWindow.rootViewController = UIViewController()
    alertWindow.makeKeyAndVisible()
    alertWindow.rootViewController?.present(alert, animated: true, completion: nil)
}

1 个答案:

答案 0 :(得分:2)

要解决此问题,我将此功能放在我的app委托中。

#define PRINT_INFO(msg1,msg2) if(dbg){fprintf(stderr,msg1);}\
                              else{fprintf(stderr,msg2);}