2015-07-19 23 views
7

Nel mio semplice applicazione, ho creato alcuni controller con segues di base tra di loro:Come unwForSegue: versoViewController: funziona?

regolatore Giallo -> BlueController -> GreenController -> OrangeController. Ognuno di loro ha una sua classe personalizzata.

Da OrangeController ho creato unwindSegue alla mia YellowController. Va bene.

All'interno di ogni classe ho messo:

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

Ma non si chiamava affatto. Perché? Quale demo dovrei preparare per testare questa funzionalità?

Lo stesso è con:

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

"Ho creato alcuni controller con segues di base tra di loro:" Sì, ma _what_ tipo di controller sono e che tipo di segues sono? 'unwindForSegue' è chiamato solo su _parent view controller_. Se non hai fatto nulla se non modale (presentazione), ad esempio, non verrà chiamato affatto, perché lo srotolamento consiste interamente in un semplice licenziamento. – matt

risposta

7

Implementare il metodo con IBAction returnType

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

In Storyboard, collegare il controllo (che è responsabile per l'azione back) all'azione uscita nel viewcontroller. enter image description here

enter image description here

+3

Qual è la differenza tra il normale 'unwindForSegue'? –