与此问题类似的大多数问题中的问题是在viewDidAppear
之前调用rootViewController
。这不是原因。
此应用不使用NIB的故事板,所有操作都是程序化的。
应用窗口的UISplitViewController
为UINavigationController
。拆分视图的视图控制器设置为两个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)
}
答案 0 :(得分:2)
要解决此问题,我将此功能放在我的app委托中。
#define PRINT_INFO(msg1,msg2) if(dbg){fprintf(stderr,msg1);}\
else{fprintf(stderr,msg2);}