iOS Swift 4 Перезагрузите навигационный контроллер - PullRequest
1 голос
/ 01 мая 2019

Моя раскадровка выглядит так:

Контроллер навигации -> StepOne -> StepTwo -> StepThree

StepOne имеет шоу Segue для StepTwo и т. Д.

В StepOne Я открываю StepTwo при нажатии кнопки следующим образом:

 @IBAction func next(_ sender: UIButton) {

     self.performSegue(withIdentifier: "oneToTwo", sender: self)

 }

В StepTwo Я открываю StepThree таким же образом.

сейчас В моем последнем StepThree я хочу перезагрузить на StepOne:

@IBAction func end_click(_ sender: UIButton) {
    self.navigationController?.popToRootViewController(animated: false)
}

Это отлично работает.

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

Есть ли способ указать NavigationController использовать новые экземпляры своих ViewController с?

Ответы [ 2 ]

2 голосов
/ 01 мая 2019

Полагаю, вы можете просто закрыть корневой контроллер контроллера навигации и представить его снова.

1 голос
/ 01 мая 2019

Вам нужно

// this inside end_click
let vc = self.storyboard!.instantiateViewController(withIdentifier:"StepOneId")
self.navigationController!.setViewControllers([vc], animated: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...