2013-04-18 3 views
7

Ho un semplice UINavigationController che spinge un UIViewController nello stack tramite una sequenza personalizzata. Ho quindi implementato IBAction sul primo UIViewController per eseguire un'azione di unwind e ho implementato followsForUnwindingToViewController. Sfortunatamente, il followForUnwindingToViewController non viene chiamato (ho confermato che canPerformUnwindSegue viene chiamato sul primo VC).Segue srotolare per UINavigationController

Non ho visto alcun esempio semplice di questo comportamento. Qualcuno può aiutare, per favore? Grazie.

Ecco il codice dal controller della vista radice del NavigationController.

- (IBAction) unwindFromSegue:(UIStoryboardSegue *)segue { 
// unwinds back to here 
//[self performSegueWithIdentifier:@"UnwindToObjectManageSegue" sender:self]; 

} 

- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController 
        withSender:(id)sender { 
return YES; 
} 

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
return YES; 
} 

- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController 
            fromViewController:(UIViewController *)fromViewController 
              identifier:(NSString *)identifier { 
ObjectManageObjectDetailSegue *segue = [[ObjectManageObjectDetailSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController]; 
[segue setUnwinding:YES]; 
return segue; 
} 
+0

Suppongo che tu abbia seguito i passaggi da [questa risposta] (http://stackoverflow.com/a/12843906/335858) ma le cose non hanno funzionato per te, giusto? – dasblinkenlight

+0

Questo è corretto. L'ho seguito a un T. Sfortunatamente, il mio svolgersi non viene chiamato. L'identificatore viene inviato correttamente, ma il seguito stesso non viene mai richiamato. – Clay

+0

Sarebbe bello se qualcuno potesse pubblicare un progetto di esempio che esemplifica ciò che è stato pubblicato in quel thread. Penso che sia un ottimo esempio, ma è piuttosto diffuso. – Clay

risposta

23

Ho avuto lo stesso problema e ho finalmente trovato una soluzione: https://github.com/simonmaddox/CustomUnwindSegue

Ha anche avuto un problema con esso non essere chiamato. Si scopre che qualsiasi controller di vista che si trova in un UINavigationController non chiamerà il controller di visualizzazione presentando invece UINavigationController. Ciò significa che devi sottoclassi quel UINavigationController e aggiungi invece quel metodo.

+4

OMG, avevo lottato con questo per circa un giorno. Grazie! Questo sembra davvero un po 'di svista nel modo in cui funzionano storyboard e folles personalizzati. Ma almeno ho qualcosa che funziona ora! –

+1

Forse questa dovrebbe essere la risposta accettata? – Greeso

+0

Grazie Greeso. Probabilmente la persona ha dimenticato. Inoltre, felice di aiutare Danny Sung – matrinox