2010-07-20 7 views
1

J'ai un UINavigationController, et je me demandais comment je peux programmer quand il a été pressé?iPhone Dev, UINavigationController, Comment savoir par programmation quand le bouton Précédent est pressé

Je demande parce que je dois effectuer certaines actions lorsque le bouton de retour est pressé, et seulement lorsque le bouton de retour est pressé. Il y a des cas où j'appuie par programmation sur le bouton de retour, et j'ai besoin d'ignorer ces instances. Quelqu'un a-t-il une suggestion?

Merci!


Voici comment le problème a été résolu:

J'ai un drapeau situé dans mon délégué de l'application. Initialement, il est défini sur False. Quand je pousse le bouton par programmation, je le mets à TRUE. Ensuite, dans la méthode viewWillAppear de mon contrôleur de vue de dessus, je teste l'indicateur et effectue les actions nécessaires. J'ai ensuite remis le drapeau à False.

+0

créez-vous le bouton * Retour * vous ou en utilisant le bouton créé automatiquement par UINavigationController? –

+0

C'est le bouton automatique, sinon j'aurais ajouté un événement onTouchUpInside. – IcyBlueRose

Répondre

3

Lorsque vous appuyez sur le bouton par programme, définissez un indicateur. Quand vous allez effectuer les actions post-presse, vérifiez si le drapeau est activé.

+0

J'ai déjà le système de drapeau en place. Le problème est que j'ai réinitialisé le drapeau chaque fois que la sous-vue a été déchargée. Le résultat était que lorsque la sous-vue était en haut et puis déchargée par programme, il mettrait ce drapeau à false n'importe quoi - il semble que la vue se décharge après tous mes feux de code. Mais ce que vous avez dit m'a fait penser à des choses un peu différemment - j'ai arrêté de mettre le drapeau quand la sous-vue a déchargé, et l'ai mise en faux ailleurs. Je vous remercie! – IcyBlueRose

0

Il ne semble pas y avoir de méthode de délégué pour cela, mais il y en a une qui, lorsqu'elle est utilisée comme cela, pourrait fonctionner pour ce dont vous avez besoin.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

if ([viewController isKindOfClass:[MasterViewController class]]) { 
} 

}

+0

Merci pour la suggestion! – IcyBlueRose

Questions connexes