Контроллер вида не будет выдвигаться - PullRequest
0 голосов
/ 27 января 2019

В моем делегате приложения есть функция, которая должна выдвигать View Controller при вызове из ярлыка Siri.

func pushNewView() {
    if let wind = UIApplication.shared.delegate?.window {
        if let rootViewController = wind?.rootViewController {
            let viewToPush = TripTableViewController()
            if let alreadySomeOneThere = rootViewController.presentedViewController {
                alreadySomeOneThere.navigationController?.pushViewController(viewToPush, animated: true)
            } else {
                rootViewController.navigationController?.pushViewController(viewToPush, animated: true)
            }
        }
    }
}

Когда я вызываю pushNewView() из моего AppDelegate, ничего не происходит.

Если я представляю контроллер представления вместо нажатия на него, это работает, но я хочу, чтобы контроллер представления был нажат.

Я не использую раскадровки, весь мой код является программным.

Кто-нибудь знает, как заставить эту функцию успешно нажать View Controller?

1 Ответ

0 голосов
/ 27 января 2019

Ничего не происходит, потому что ни alreadySomeOneThere, ни rootViewController не встроены в контроллер навигации.

Чтобы выдвинуть другой контроллер вида, должен быть установлен существующий контроллер навигации.

Вам нужно сделать одну из двух вещей.Либо переделайте вашу настройку так, чтобы alreadySomeOneThere и rootViewController были встроены в контроллер навигации, либо вам необходимо представить новый контроллер вида из alreadySomeOneThere или rootViewController.

Обратите внимание, что вы можете 'Нажмите на навигационный контроллер.Если вы решите поместить alreadySomeOneThere и rootViewController в контроллер навигации, просто нажмите viewToPush.Не создавайте другой контроллер навигации.

Если вместо этого вы решите представить новый контроллер представления из alreadySomeOneThere или rootViewController, то в зависимости от потребностей viewToPush вам может понадобиться, а может и не понадобиться viewToPush встроен собственный контроллер навигации.

...