Уволен только представленный вид контроллера, а не весь навигационный стек Swift - PullRequest
2 голосов
/ 07 января 2020

У меня есть контроллер панели вкладок. В этой первой вкладке находится навигационный контроллер. Давайте назовем его контроллером А. Затем я помещаю на него другой контроллер представления. Давайте назовем его контроллером B. После этого я представляю контроллер вида C из контроллера вида B. Теперь я хочу отклонить только контроллер вида B.

Панель вкладок - A (Контроллер навигации root v c) -> Pu sh V C -> B -> Present V C -> C

A до B будет использовать self.navigationController.pushViewController(animated: true, completion: nil)

B C выглядит так
let vc = CViewController() vc.modalPresentationStyle = .fullScreen self.present(vc,animated: true,completion: nil)

Теперь, когда я использую self.dismiss(animated: true, completion: nil) в View Controller C. Он возвращается к контроллеру root, т. Е. V c A. Я хочу, чтобы он go к V C B.

Video of issue

1 Ответ

0 голосов
/ 08 января 2020

После недолгих раздумий я повторил то, что вы пытались сделать, и понял, что проблема не в вызове dismiss. Именно так вы и назвали этот View Controller. Немного измените свой код "B на C".

Вместо:

let v c = CViewController ()

v c .modalPresentationStyle = .fullScreen

self. присутствует (v c, анимация: истина, завершение: ноль)

использование:

let sb : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(identifier: "C")
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: true, completion: nil)

Вы должны указать идентификатор контроллера представления в раскадровке, (Storyboard ID)

Теперь, когда вы вызываете self.dismiss (), он должен закрываться только C. Я проверил это на своем компьютере с Xcode 11.1.

...