Мне нужно изменить поток ViewControllers, отображаемых на основе раскадровки в унаследованном приложении.
Допустим, раскадровка говорит, чтобы отображать экраны следующим образом:
screen A -> screen B -> screen C -> screen D
Теперь модификация состоит в том, что в зависимости от конкретного условия экран C не должен отображаться. Допустим, если условие истинно, отображается экран C, в противном случае это не так, и экран D отображается непосредственно.
Расход должен быть:
/-------false--\
/ \
/ true \
screen A -> screen B ---------> screen C ----> screen D
Я создаю переход между экраном B и экраном D. Если условие истинно, я ничего не делаю (отображается экран C, а затем экран D), если условие ложно, я вызываю переход в ViewController для экрана B:
performSegue(withIdentifier: "DirectlyDisplayScreenD", sender: self)
Это почти работает ... экран C отображается полсекунды, а затем появляется экран D.
Я новичок в iOS, правильно ли я сделал хотя бы в принципе?
Есть ли очевидная причина, по которой экран C отображается в скором времени? Это из-за раскадровки? или вызова segue недостаточно? или это означает, что ViewController для экрана C создается где-то в коде?
Есть ли способ удалить ViewController из раскадровки? Я нашел метод instantiateViewController , но я не нашел метод "removeViewController"