Как вы используете раскручивать 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
не реализует unwindFromE
iOS ищет другие контроллеры view, контролируемые UITabBarController
, В вашем случае он нашел C
и переключился на эту вкладку.
Дополнительную информацию о размоточных сегментах можно найти в Техническом примечании TN2298: Использование размоточных сегментов.