2010-08-09 3 views
0

Je veux faire des choses d'enregistrement lorsque l'utilisateur appuie sur le bouton de retour sur un contrôleur de navigation. Est-ce possible uniquement en implémentantComment effectuer une action lorsque le contrôleur de navigation affiche une vue sur l'iPhone?

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    int index = [[self.navigationController.viewControllers] indexOfObject:[self.navigationController.visibleViewController]]; 
    if(viewController == [[self.navigationController.viewControllers] objectAtIndex:index-1]) 
     //saving code here 

alors le délégué est appelé lorsqu'il est sur le point d'afficher le contrôleur de vue précédent. Y a-t-il une manière plus élégante de savoir quand le contrôleur de vue sera sauté?

et je ne peux pas utiliser viewWillDisappear car il y a un bouton qui affiche un UIImagePickerController, et je ne veux pas que l'enregistrement soit fait ensuite. Des pensées?

+0

vous écrivez le code quand un contrôleur de vue get a sauté, pour que vous puissiez y faire votre épargne. Et ce qui n'est pas élégant à propos de l'utilisation des délégués? – thelaws

+0

Eh bien, je veux dire que c'est la seule façon que je peux voir pour le faire, mais il semble que ce soit une chose courante de devoir faire quelque chose quand quelque chose se déclenche, donc j'ai supposé qu'il y avait une autre façon de le faire. Il n'y a rien d'élégant dans le code ci-dessus, il semble juste comme un "tricheur" moyen de faire le travail. c'est peut-être juste moi. – marty

+0

effectivement la méthode ci-dessus ne fonctionne même pas. Donc, le problème subsiste. – marty

Répondre

0

Vous effectuez normalement des opérations de ce type dans la méthode "viewWillDisappear:" d'un contrôleur de vue.

Oui, il sera également activé si vous allez de l'avant, mais vous pouvez le signaler à la méthode pour savoir si vous avez l'intention de lancer autre chose - et c'est probablement une bonne idée de sauvegarder quoi que ce soit. .

1

Ou

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem  *)item 
{ 
    //insert your back button handling logic here 
    // let the pop happen 
    return YES; 
}  
Questions connexes