2013-04-18 12 views
7

Ich habe einen einfachen UINavigationController, der einen UIViewController über ein benutzerdefiniertes Segment auf den Stack schiebt. Ich habe dann eine IBAction auf dem ersten UIViewController implementiert, um eine Abwicklungsaktion auszuführen, und ich implementiere segueForUnwindingToViewController. Unglücklicherweise wird der segueForUnwindingToViewController nicht aufgerufen (ich habe bestätigt, dass canPerformUnwindSegue auf dem ersten VC aufgerufen wird).Unwind Segue für UINavigationController

Ich habe keine einfachen Beispiele für dieses Verhalten gesehen. Kann mir bitte jemand helfen? Vielen Dank.

Hier ist der Code vom Root View Controller des NavigationControllers.

- (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

Ich nehme an, dass Sie die Schritte von [dieser Antwort] (http://stackoverflow.com/a/12843906/335858) gefolgt haben, aber Dinge haben nicht für Sie funktioniert, richtig? – dasblinkenlight

+0

Das ist richtig. Ich folgte dem zu einem T. Leider wird meine Abwicklungsstrecke nicht aufgerufen. Der Bezeichner wird korrekt gesendet, aber das Segment selbst wird nie aufgerufen. – Clay

+0

Es wäre großartig, wenn jemand vielleicht ein Beispielprojekt posten könnte, das veranschaulicht, was in diesem Thread gepostet wurde. Ich denke, es ist ein großartiges Beispiel, aber es ist ziemlich weit verbreitet. – Clay

Antwort

23

hatte ich das gleiche Problem und ich fand schließlich eine Lösung: https://github.com/simonmaddox/CustomUnwindSegue

Er hatte auch ein Problem mit ihm nicht genannt zu werden. Es stellt sich heraus, dass jeder View-Controller, der sich in einem UINavigationController befindet, nicht den präsentierenden View-Controller, sondern stattdessen den UINavigationController aufruft. Dies bedeutet, dass Sie den UINavigationController von der Unterklasse ableiten und stattdessen diese Methode hinzufügen müssen.

+4

OMG, damit hatte ich ungefähr einen Tag zu kämpfen. Vielen Dank! Dies scheint wirklich ein bisschen ein Versehen in der Art und Weise zu sein, wie Storyboards und benutzerdefinierte Übergänge funktionieren. Aber zumindest habe ich etwas, das jetzt funktioniert! –

+1

Vielleicht sollte dies die akzeptierte Antwort sein? – Greeso

+0

Danke Greeso. Wahrscheinlich hat die Person vergessen. Auch, froh, Danny Sung zu helfen – matrinox

Verwandte Themen