2015-07-19 6 views
7

W moim prostych aplikacji, stworzyłem kilka kontrolerów z podstawowymi segues między nimi:Jak unwindForSegue: towardsViewController: działa?

Żółty kontroler -> BlueController -> GreenController -> OrangeController. Każdy z nich ma własną niestandardową klasę.

Od OrangeController stworzyłem unwindSegue do mojego YellowController. Jest w porządku.

obrębie każdej klasy I umieścić:

override func unwindForSegue(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) { 
    print(unwindSegue) 
    print(subsequentVC) 
} 

Ale to nie było nazywane w ogóle. Czemu? Jakie demo powinienem przygotować, aby przetestować tę funkcjonalność?

Podobnie jest z:

func allowedChildViewControllersForUnwindingFromSource(source: UIStoryboardUnwindSegueSource) -> [UIViewController] 
func childViewControllerContainingSegueSource(source: UIStoryboardUnwindSegueSource) -> UIViewController? 
+1

„Stworzyłem kilka kontrolerów z podstawowych segues między nimi:” Tak, ale _what_ rodzaju kontrolerów są i jaką segues oni są? Funkcja "unwindForSegue" jest wywoływana tylko w _parent view controllers_. Jeśli zrobiłbyś tylko modalne (prezentacja) segues, na przykład, to nie będzie w ogóle wzywany, ponieważ rozwijanie składa się wyłącznie z prostego zwolnienia. – matt

Odpowiedz

7

Wdrożenie sposobu z IBAction returnType

-(IBAction) unwindForSegue:(nonnull UIStoryboardSegue *)unwindSegue towardsViewController:(nonnull UIViewController *)subsequentVC 

W Storyboard połącz kontroli (która jest odpowiedzialna za działanie back) działaniu wyjściowej w kontrolce viewcontroller. enter image description here

enter image description here

+3

Jaka jest różnica między zwykłym "unwindForSegue"? –