swift - 如何使用 applicationdidBecomeActive 函数呈现 ViewController(但有一些异常(exception))?

标签 swift background uiimagepickercontroller appdelegate

在 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/

相关文章:

iOS 如何启动图像选择器

swift - TableView Section Footers 在旋转后不会调整其宽度

ios - 当应用程序处于非事件状态时,如何通过点击 UNUserNotification 操作按钮中的播放按钮来启动音频播放器?

swift - 快速向 AnnotationPin 添加操作

validation - CSS3 背景渐变不验证,谁能告诉我为什么?里面的代码示例

android - builder.setInverseBackgroundForced(true) 不起作用

ios - 如何使用 Moya 在 Swift 中上传图片?

ios - 根据键盘高度更新文本字段的约束

android - 如何在 Android 的 Notification 的 RemoteView 中设置 ImageView 的背景?

ios - 如何将图像添加到相机覆盖 View (swift4)