J'ai un UITabBarConroller que j'utilise pour basculer entre 3 vues différentes. Tout cela fonctionne parfaitement. Sur l'un de mes onglets, j'ai ajouté un bouton à à appelé « Ajouter », j'ai ajouté une prise à cela, ainsi qu'une méthode de IBAction qui ressemble à ce qui suit:iPhone SDK: Passage à une vue puis retour aux erreurs de vue précédentes
// Method used to load up view where we can add a new ride
- (IBAction)showAddNewRideView {
MyRidesViewController *controller = [[MyRidesViewController alloc] initWithNibName:@"AddNewRide" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:controller animated:YES];
[controller release];
}//end showAddNewRideView
Cela fonctionne actuellement très bien, et charge mon fichier nib AddNewRide. Mais, une fois cette vue chargée, j'ai un bouton d'annulation, qui, lorsqu'on clique dessus, je veux revenir à la vue précédente. Alors, je me suis dit que je voudrais juste faire l'inverse de ce qui précède, en utilisant la méthode suivante qui chargerait retour ma plume précédente:
- (IBAction)cancelAddingNewRide {
MyRidesViewController *controller = [[MyRidesViewController alloc] initWithNibName:@"MainWindow" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:controller animated:YES];
[controller release];
}//end cancelAddingNewRide
Mais, qui essaie de charger la pointe MainWindow, le programme se bloque, et je reçois l'erreur suivante:
2010-05-05 20:24:37.211 Ride[6032:207] *** -[MyRidesViewController cancelAddingNewRide]: unrecognized selector sent to instance 0x501e450
2010-05-05 20:24:37.213 Ride[6032:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MyRidesViewController cancelAddingNewRide]: unrecognized selector sent to instance 0x501e450'
donc, je suis un peu perdu la raison pour laquelle il travaillerait dans un sens, mais pas l'autre.
Ceci est vrai mais n'est pas recommandé. Le viewController actuel ne devrait pas se fermer, la classe qui l'a appelé devrait l'ignorer. – Rudiger
Les docs d'Apple disent: "Le contrôleur de vue parent est responsable de l'annulation du contrôleur de vue modale présenté en utilisant la méthode presentModalViewController: animated:.Si vous appelez cette méthode sur le contrôleur de vue modale lui-même, le contrôleur de vue modale transfère automatiquement le message à son contrôleur de vue parent. "Bien que le contrôleur modal ne soit pas responsable, il ne dit pas qu'il ne doit pas se fermer. –
Yay! Cela a vraiment fonctionné, et résolu mon problème.Mais, vous voyez que ce n'est pas une bonne méthode? –