Как представить контроллер вида из appdelegate xcode 11 swift 5 - PullRequest
0 голосов
/ 06 апреля 2020

Я весь день искал, как представить контроллер представления из приложения applegate. Похоже, что в xcode 11 свойство окна было перемещено в сценическое делегат, который меня смущал. Я хочу представить контроллер представления из appdelegate из функции didReceiveRemoteNotification, поэтому, когда пользователь получает уведомление, он переносит его в отдельный контроллер представления с информацией. Я пытался сделать:

self.window?.rootViewController?.present(LoginViewController(), animated: false, completion: nil)

в appdelegate, который работал в моем предыдущем приложении, но, похоже, он больше не работает. Любая помощь будет высоко ценится.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Мне удалось решить эту проблему с помощью общего windows, чтобы получить окно из scenedelegate для представления контроллера представления.

UIApplication.shared.windows.first?.rootViewController?.present(vc, animated: false, completion: nil)
0 голосов
/ 06 апреля 2020

Лучший подход к представлению контроллера представления через делегата приложения - не упасть для иерархии, как показано ниже:

if let vc = UIStoryboard(name: "YOURSTORYBOARD", bundle: nil).instantiateViewController(withIdentifier: "YOURVIEWCONTROLLER") as? YOURVIEWCONTROLLER {
if let window = self.window, let rootViewController = window.rootViewController {
    var currentController = rootViewController
    while let presentController = currentController.presentedViewController {
        currentController = presentController
    }
       currentController.present(vc, animated: true, completion: nil)
   }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...