iOS pushViewController не перемещается к контроллеру в Swift5 - PullRequest
0 голосов
/ 23 мая 2019

У меня проблемы с использованием pushViewController в Swift5, я искал в StackOverflow ответы и не смог найти ни одного работающего.

Все, что я пытаюсь сделать, - это перейти к другому контроллеру с помощью pushViewController.

Использование self.present работает для навигации, но pushViewController не работает по неизвестным мне причинам.

ТОЛЬКО с использованием представленных ниже работ:

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = 
    storyBoard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
self.present(viewController, animated: true, completion: nil)

Но использование pushViewController никогда не работает:

Я пробовал это: я не работаю

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
navigationController?.pushViewController(vc, animated: true)

Я пробовал это: я тоже не работаю

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController" )
var navigationController = UIApplication.shared.keyWindow?.rootViewController as! UINavigationController
navigationController.pushViewController(viewController, animated: true)

Я пробовал это, Это такжене работает

let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController" )
let vc = self.windowRootViewController() as! ViewController
let nvc = vc.parent as! UINavigationController
nvc.pushViewController(viewController, animated: true)

Пожалуйста, кто-нибудь может правильно подсказать мне, что я делаю неправильно, или контрольный список или конфигурацию, которые мне нужно сделать, чтобы это работало?

Спасибо всем!

Ответы [ 2 ]

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

ViewController, который пытается нажать, должен быть встроен в NavigationController.

Предположим, у вас есть два контроллера ViewController - ViewControllerA и ViewControllerB.Чтобы выдвинуть ViewControllerB из ViewControllerA, ViewControllerA должен быть встроен в NavigationController.Чтобы вы могли вставить ViewControllerB в стек навигации.

Если ViewControllerA не встроен в NavigationController Это свойство navigationController будет nil .Таким образом, вы не сможете нажать ViewControllerB.

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

Установите точку останова в своем коде и убедитесь, что navigationController не ноль.Если оно равно nil, pushViewController не будет работать.

Поскольку вы можете представить viewController, создание экземпляра itt с использованием "ViewController" не должно быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...