(1) Formulez votre question: ajoutez au moins 4 espaces avant chaque ligne de code.
(2) Pourquoi utilisez-vous l'initialiseur initWithNibName:bundle:
si vous transmettez le nom NIB? Il suffit d'utiliser le init
régulier.
(3) Je vois que vous avez déjà libéré le contrôleur de vue.
Il sera publié une fois de plus (en arrière-plan) une fois que vous le rejetter.
(4) Si vous avez l'intention de demander "Où est un bon endroit pour ignorer la vue actuelle avant la prochaine est présentée?" alors cela dépend de votre structure.
Habituellement, la meilleure approche consiste à ajouter une méthode de délégué dans le contrôleur de vue d'origine, le contrôleur de vue modale appellera cette méthode délégué et le contrôleur de vue d'origine rejettera le modal comme ceci: [self dismissModalViewControllerAnimated:YES];
.
EDIT:
Exemple de code pour le délégué:
// The protocol that your original view controller should implement
@protocol ModalViewControllerDelegate <NSObject>
@required
- (void)modalViewControllerDidCancel:(UIViewController *)modalViewController;
- (void)modalViewController:(UIViewController *)modalViewController didReturnWithResult:(NSObject)result;
@end
Voici comment mettre en œuvre:
@interface MainViewController : UIViewController <ModalViewControllerDelegate> {
...
}
...
@end
@implementation MainViewController
...
#pragma mark -
#pragma mark ModalViewControllerDelegate methods
- (void)modalViewControllerDidCancel:(UIViewController *)modalViewController {
[self dismissModalViewControllerAnimated:YES];
}
- (void)modalViewController:(UIViewController *)modalViewController didReturnWithResult:(NSObject)result {
// TODO: Do something with the result
[self dismissModalViewControllerAnimated:YES];
}
...
@end
vous devez ajouter le code à côté de vos contrôleurs modales vue:
@interface ModalViewController1 : UIViewController {
...
id<ModalViewControllerDelegate> delegate;
...
}
@property (assign) id<ModalViewControllerDelegate> delegate;
...
@end
@implementation ModalViewController1
@synthesize delegate;
...
- (void)cancelUserAction {
...
[self.delegate modalViewControllerDidCancel:self];
}
@end
N'oubliez pas également de définir la propriété delegate sur self (à partir de MainViewController) une fois que vous avez créé le contrôleur de vue modale ...
Voulez-vous dire libération ou rejet? – vodkhang
Je veux dire rejeter. Quand je présente une nouvelle vue modale à partir de celle-ci, j'ai besoin de rejeter l'ancienne ou bien elle monopolise la mémoire. – Hippocrates