在 AppDelegate 中使用 applicationDidBecomeActive 是每次 ios 应用程序激活时呈现特定 ViewController 的好方法。但是我如何覆盖此函数并在应用程序再次激活后何时显示 View Controller 做出一些异常(exception)。当我从 UIImgaePickerController 中选取图像时, View Controller 再次显示。如何使我的应用程序处于事件状态,即使不是为了避免在 applicationDidBecomeActive() 中分配的根 Controller 再次弹出。
最佳答案
如果我正确理解了这个问题,那么您想在使用应用程序时发生某些情况时更改 Root View Controller ,因此您可以将这段代码放入您的 AppDelegate
中:这只会捕获当前的 rootViewController
,设置新的并在转换中关闭并删除旧的
func changeRootViewController(with viewController: UIViewController) {
guard let oldViewController = self.window?.rootViewController else { return }
UIView.transition(from: oldViewController.view, to: viewController.view, duration: 0.3, options: [.transitionCrossDissolve, .allowAnimatedContent]) { _ in
self.window!.rootViewController = viewController
self.window!.makeKeyAndVisible()
oldViewController.dismiss(animated: false) {
oldViewController.view.removeFromSuperview()
}
}
}
然后,当您需要更改rootViewController
时,您可以:
let appDelegate = UIApplication.shared.delegate as? AppDelegate
appDelegate?.changeRootViewController(with: MyNewViewController())
关于swift - 如何使用 applicationdidBecomeActive 函数呈现 ViewController(但有一些异常(exception))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56162720/