Закройте viewcontroller после перехода - PullRequest
2 голосов
/ 21 октября 2019

Я хочу закрыть viewController после выполнения перехода, чтобы кнопка возврата на навигационном контроллере в новом представлении не возвращалась к тому виду, который я только что закрыл, а к представлению, котороепредшествует этому в раскадровке, как будто это первый раз, когда он загружается.

enter image description here

Я уже пробовал такие вещи, как dismiss и так, но это неЭто действительно не работает для меня, так как закрывает только вид, в котором находится кнопка, которую я нажал для выполнения функции:

@objc func goToList(){
   self.dismiss(animated: true, completion: nil)
   performSegue(withIdentifier: "goToList", sender: nil)
}

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Контроллер навигации поддерживает стек (массив) ViewControllers, которые были открыты (выдвинуты). Он также имеет возможность извлекать эти ViewControllers из стека, пока не доберется до определенного.

Например, если вы хотите вернуться к предыдущему контроллеру представления типа MyInitialVC, вам нужно будет выполнить поиск в стеке, пока не найдете этот тип VC, а затем перейти к нему:

let targetVC = navigationController?.viewControllers.first(where: {$0 is MyInitialVC})
if let targetVC = targetVC {
   navigationController?.popToViewController(targetVC, animated: true)
}

Примечание. записано из памяти без XCode, поэтому вам может потребоваться исправить незначительные опечатки

0 голосов
/ 21 октября 2019

Вы можете использовать unwind segue, чтобы вернуться к каждому viewController, который вам нужен.
Подробнее читайте здесь:
Пошаговые этапы раскрутки (и 4 причины их использования)

...