2013-04-18 5 views
7

J'ai un simple UINavigationController qui pousse un UIViewController sur la pile via un segment personnalisé. J'ai ensuite implémenté un IBAction sur le premier UIViewController pour exécuter une action de déroulement et j'implémente segueForUnwindingToViewController. Malheureusement, le segueForUnwindingToViewController n'est pas appelé (j'ai confirmé que canPerformUnwindSegue est appelé sur le premier VC).Dérouler Segue pour UINavigationController

Je n'ai pas vu d'exemples simples de ce comportement. quelqu'un peut-il aider s'il vous plait? Merci.

Voici le code du contrôleur de vue racine du 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

Je suppose que vous avez suivi les étapes de [cette réponse] (http://stackoverflow.com/a/12843906/335858) mais les choses n'ont pas fonctionné pour vous, correct? – dasblinkenlight

+0

C'est correct. J'ai suivi cela à un T. Malheureusement, mon se dérouler segue n'est pas appelé. L'identifiant est envoyé correctement, mais le segue lui-même n'est jamais invoqué. – Clay

+0

Ce serait génial si quelqu'un pouvait peut-être poster un exemple de projet qui illustre ce qui a été posté dans ce fil. Je pense que c'est un bon exemple, mais il est plutôt étalé. – Clay

Répondre

23

J'ai eu le même problème et j'ai finalement trouvé une solution: https://github.com/simonmaddox/CustomUnwindSegue

Il avait aussi un problème avec elle pas appelé. Il s'avère que tout contrôleur de vue qui se trouve dans un UINavigationController n'appellera pas le contrôleur de vue de présentation mais UINavigationController à la place. Cela signifie que vous devez sous-classer UINavigationController et ajouter cette méthode à la place.

+4

OMG, j'avais lutté avec ça pendant environ une journée. Je vous remercie! Cela semble vraiment un peu un oubli dans la façon dont fonctionnent les storyboards et les personnalisations. Mais au moins j'ai quelque chose qui fonctionne maintenant! –

+1

Peut-être que cela devrait être la réponse acceptée? – Greeso

+0

Merci Greeso. Probablement personne a oublié. Aussi, heureux d'aider Danny Sung – matrinox

Questions connexes