Как вы используете раскручивать Segue, когда у вас есть несколько ViewController, который вызывает его

Я недавно начал изучать iOS/Swift и интересовался, как использовать раскрутку.

Предположим следующее представление контроллера A, B, C, E, F, X, BB, BBB

C -> A -> E
C -> B -> BB -> E
C -> B -> BBB -> E
C -> D -> E
F -> X -> E

Как мне использовать раскрутить Segue, чтобы вернуться к C или B или D от E?

Примечание: в ViewController E есть только один Back кнопка.

Я пробовал следующее решение:

// Add this method in C, B, and D view controller
@IBAction func unwindFromE(sender: UIStoryboardSegue) {}

Кажется, это работает как-то как, но почему он вернулся к C для F -> X -> E, хотя в контроллере представления F/X нет метода unwindFromE.

1 ответ

Решение

Как вы обнаружили, вы можете реализовать цель раскрутки @IBAction в нескольких viewControllers и iOS будут идти вверх по цепочке вызовов, пока не найдут один. Это позволяет viewController E вернуться к тому, кто вызвал его, пока они реализуют целевую функцию unwindFromE,

В случае вашего E расслабиться, возвращаясь к C когда стек вызовов был F->X->Eэто случается когда C а также F контролируются ли контроллеры view одинаковыми UITabBarController, поскольку F не реализует unwindFromEiOS ищет другие контроллеры view, контролируемые UITabBarController, В вашем случае он нашел C и переключился на эту вкладку.

Дополнительную информацию о размоточных сегментах можно найти в Техническом примечании TN2298: Использование размоточных сегментов.

Другие вопросы по тегам