2011-06-06 3 views
0

Pour commencer, je voudrais présenter mes excuses pour mon anglais :)Appel de la méthode d'une autre classe

Je FirstViewController, qui contient ScrollView. C'est scrolView avec pagination activée, et avoir 2 pages avec 2 contrôleurs de vue différents. À partir de l'un des contrôleurs de vue en touchant le bouton, le troisième contrôleur de vue apparaît comme une vue modale. J'appelle une méthode dans FirstViewController qui doit désactiver le défilement et cacher deux étiquettes qui ne sont pas contenues dans le scrollView. La méthode est en cours d'exécution, mais l'interface utilisateur ne change pas, le défilement est toujours activé et les libellés sont toujours visibles.

Maintenant un peu de code:

C'est un morceau de la FirstViewController.h (non le code entier):

@interface FirstViewController : UIViewController <UIScrollViewDelegate> { 

    IBOutlet UIScrollView *scrollView; 
    IBOutlet UILabel *label1; 
    IBOutlet UILabel *label2; 

} 

@property (nonatomic, retain) UILabel *label1; 
@property (nonatomic, retain) UILabel *label2; 
@property (nonatomic, retain) UIScrollView *scrollView; 

-(void)prepareToModal; 


@end 

Maintenant, il est -(void)prepareToModal; mise en œuvre:

-(void)prepareToModal { 
    [label1 setHidden:YES]; 
    [label2 setHidden:YES]; 
    scrollView.scrollEnabled = NO; 
} 

Alors , à partir de l'un des contrôleurs de vue, qui contenue dans scrollView, j'appelle prepareToModal

Auparavant:

#import "FirstViewController.h" 

suivant:

FirstViewController *vc = [[FirstViewController alloc] init]; 
[vc prepareToModal]; 
[vc release]; 

Alors, voilà tout. J'ai mis un point d'arrêt dans prepareToModal, et il a cessé d'être exécuté. La méthode est appelée, mais rien ne change à l'écran ...

Qu'est-ce que je fais de mal? Comment faire ceci correctement?

Mise à jour:

Je résolu ce problème.

Lorsque je présente ce point de vue modal, j'ai écrit ceci:

ThirdViewController *tvc = [[ThirdViewControler alloc] init]; 
tvc.delegate = self; 

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:tvc]; 

[self presentModalViewController:nc animated:YES]; 

[tvc release]; 
[nc release]; 

Maintenant, insted de [self presentModalViewController:nc animated:YES]; Je vous écris ceci:

[[[[UIApplication sharedApplication].windows objectAtIndex:0] rootViewController] presentModalViewController:nc animated:YES]; 

et cela fonctionne très bien, je ne suis pas besoin d'un méthode -(void)prepareToModal;

Merci beaucoup :)

Répondre

1

Assurez-vous d'avoir branché vos IBOutlets dans Interface Builder.

+0

IBOutlets déjà connectés. – Randex

+0

Vous ne faites rien avec VC dans cet exemple, donc ce ne peut pas être celui qui apparaît sur l'écran!?! Vous créez simplement une nouvelle instance de l'un, appelez la méthode modale de préparation et libérez-la .... –

+0

Que devrais-je écrire à la place? – Randex

Questions connexes