警告:尝试在其视图不在 window 层次结构中的 UISplitViewController 上呈现 UIAlertController
Warning: Attempt to present UIAlertController on UISplitViewController whose view is not in the window hierarchy
大多数与此问题类似的问题是 present
在 viewDidAppear
之前被调用。这不是这里的原因。
本应用不使用NIB的Storyboards,所有操作都是程序化的。
应用程序 window 的 rootViewController
是 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)
}
大多数与此问题类似的问题是 present
在 viewDidAppear
之前被调用。这不是这里的原因。
本应用不使用NIB的Storyboards,所有操作都是程序化的。
应用程序 window 的 rootViewController
是 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)
}