2011-08-02 2 views
0

J'ai 2 classes: la classe A a un protocole déclaré, que j'appelle dans la classe B. J'envoie une image de la classe A à la classe B en utilisant delegate et en classe B fais quelque chose avec cette image sous la méthode du protocole de la classe A. Puis je veux faire une nouvelle vue à la fin de la méthode de ce protocole dans la classe B. Je sais que ces 2 lignes d'invocation de nouvelle vue fonctionnent parce que si je l'appelle en classe A (par exemple dans viewDidLoad) alors c'est travail. Nouvelle vue montre dans ce cas tout ce que je veux. Cependant, quand je l'appelle de la méthode du protocole, cela ne fonctionne pas. Comment montrer cette vue?Affichage d'une autre vue de la méthode déléguée

classe A.h

@protocol AViewControllerDelegate<NSObject> 
@optional 
- (void) tappedImage:(NSNumber*)tag; 
@end 

classe a.m

[self dismissModalViewControllerAnimated:YES]; 
if ([self.delegatee respondsToSelector:@selector(tappedImage:)]) 
    [self.delegatee performSelector:@selector(tappedImage:) withObject: [NSNumber numberWithInt:imageView.tag]]; 

classe B.m

- (void) tappedImage:(NSNumber*)tag{ 
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: [NSString stringWithFormat: @"%@.png",tag]]]; 

PictureEditingViewController *dvController = [[PictureEditingViewController alloc] initWithPicture: imgView.image]; 
[self presentModalViewController:dvController animated:YES]; 
//[dvController release]; dvController = nil; 
} 

PictureEditingViewController est appelé, je vois que j'ai NSLog l'intérieur viewDidLoad là. Cependant, rien ne s'affiche sur l'écran de l'iPhone, probablement la nouvelle vue est «sous» l'ancienne vue. Comment définir la nouvelle vue sur le dessus de l'ancienne vue ..?

Merci pour toute aide ^^

Répondre

0

Je ne trouve pas de bonne méthode pour le faire, mais quand j'ajouté contrôleur de navigation et au lieu de:

[self presentModalViewController:dvController animated:YES]; 

utilisé:

[self.navigationController pushViewController:pictureEditingVC animated:YES]; 

L'application fonctionnait bien. Ce n'est pas une solution mais un moyen d'omettre ce problème.

Questions connexes