Как вы используете раскручивать Segue, когда у вас есть несколько ViewController, который вызывает его - PullRequest
0 голосов
/ 26 апреля 2018

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

Предположим, что следующие контроллеры представления 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

Как мне использовать раскрутку, чтобы вернуться к 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 Ответ

0 голосов
/ 26 апреля 2018

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

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

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

...