Как я могу представить ViewController, используя функцию applicationdidBecomeActive с некоторыми исключениями? - PullRequest
0 голосов
/ 16 мая 2019

Использование applicationDidBecomeActive в AppDelegate - это хороший способ представления определенного ViewController каждый раз, когда приложение ios становится активным. Но как я могу переопределить эту функцию и сделать несколько исключений, когда показывать контроллер представления или нет, когда приложение снова становится активным. Когда я выбираю изображение из UIImgaePickerController, контроллер представления снова появляется. как я могу сделать свое приложение активным, даже если не избежать появления корневого контроллера, назначенного в applicationDidBecomeActive (), для повторного всплывающего окна.

1 Ответ

0 голосов
/ 16 мая 2019

Если я правильно понял вопрос, вы хотите изменить контроллер корневого представления, когда что-то происходит во время использования вашего приложения, так что вы можете поместить этот кусок кода в ваш 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())
...