我觉得这很简单: 每当我在应用程序运行时收到远程通知时,都会显示带有消息的UIAlertController。
问题是,当主应用程序即将推送/呈现另一个视图控制器时,可能会发生该警报。在这种情况下,我会收到像
这样的丑陋错误消息 pushViewController:animated: called on <UINavigationController 0x7f400c00> while an existing transition or presentation is occurring; the navigation stack will not be updated.
并且应用可能会以这种方式进入不一致的状态。 我如何安排视图控制器转换,以便它们不会像这样发生冲突?
答案 0 :(得分:3)
将控制器分成两个UIWindow
来解决这个问题。
而不是仅仅在应用程序的一个视图控制器上显示警报,您可以创建一个如下所示的新窗口:
let screen = UIScreen.main
let screenBounds = screen.bounds
let alertWindow = UIWindow(frame: screenBounds)
alertWindow.windowLevel = UIWindowLevelAlert
let vc = UIViewController()
alertWindow.rootViewController = vc
alertWindow.screen = screen
alertWindow.isHidden = false
vc.present(alert, animated: true)
现在,应用程序主窗口中的视图控制器可以同时推送和显示其他控制器以显示警报。