Показать другой дочерний контроллер навигации без родителя - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть такая схема контроллера навигации:

(A)RootVC
    |
    -(B)ChildVC_1
    |    |
    |    -(C)ChildVC_1_2
    |
    -(D)ChildVC_2

Мне нужно из (С) открыть (D). Я использую код в (C):

navigationController?.popToViewController(...)
rootVC.performSegue(withIdentifier: "ChildVC_2", sender: nil)

И это работает правильно. За исключением одной проблемы: сначала я вижу (A) и только после этого на экране появляется (D).

Вопрос в том, как открыть (D) из (C), не показывая (A)? Кроме того, после этого, когда я использую кнопку возврата из (D), мне нужно открыть (A)

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

как открыть (D) из (C), не показывая (A)

Нажмите D на C.

после этого, когда я использую кнопку возврата из (D), мне нужно открыть (A)

Сразу после нажатия вызовите setViewControllers, чтобы незаметно удалить B и C из стека. У вас останутся только A и D. Таким образом, кнопка Back приведет от D к A, так как в стеке больше ничего нет.

enter image description here

0 голосов
/ 15 сентября 2018

Вы можете попытаться присвоить каждому виртуальному каналу идентификатор раскадровки и загрузить его, а затем назначить свойство viewControllers элемента navigationController

let rootVC = storyboard!.instantiateViewController(withIdentifier: "rootId")
let dVC = storyboard!.instantiateViewController(withIdentifier: "dId")
self.navigationController?.setViewControllers([rootVC,dVC],animated:true) // set it to false if you want 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...