2010-06-24 3 views
0

J'espère que vous réussirez au moins un peu à me clarifier comment et quoi faire, je suis sûr que je me trompe, donc j'ai vraiment besoin d'une opinion d'expert. J'ai deux viewcontroller avec des nibs ce que je veux appeler une fonction qui est en première classe d'un autre ViewController, le problème est qu'un autre viewcontroller réussit à appeler cette fonction mais la seule chose que je peux voir c'est que NSlog la console (que je mets dans cette position de savoir que la fonction est appelée)Fonction d'appel dans la première vue de l'autre viewcontroller

exemple: FirstViewController.m

-(void)drawingFunction:(NSString*)inputText{ 
NSLog("Feature was launched"); 
/* showing stuff in FirstView.xib */ 
} 

SecondViewController.m

-(void)turnOnFunction:(id)sender{ 
FirstViewController *stuff= [[PrviViewController alloc] init]; 
[stuff drawingFunction:@"ShowAll"]; 
} 

Fondamentalement, quand j'appelle cette fonction dans le PrviViewController.m signification sans référence à l'extérieur, par ex.

[self drawingFunction:@"ShowAll"]; 

tout est bien affiché, mais lorsque je tente d'appeler cette fonction de SecondViewController.m tout ce que je vois est juste un « fonctionnalité a été lancé » sur la console

Je ne sais vraiment pas Que faire ...

Répondre

0

Si je vous ai bien compris, le FirstViewController est en haut de la hiérarchie du contrôleur de vue (dans un contrôleur de navigation ou dans un modal présenté)? Donc, si c'est le cas, créer une instance de SecondViewController et appeler une fonction qui devrait changer l'interface utilisateur sur la vue qui correspond à SecondViewController ne fera rien du tout.

Vous devez présenter le SecondViewController et sa vue avec presentModalViewController:animated: par exemple. Après cela, la vue de SecondViewController sera affichée et vous pouvez faire des changements sur cette vue. Appelant également la méthode drawingFunction: agira comme vous l'attendez.

Cheers, Andreas

0

Vous confondez les instances avec des classes. Vous n'envoyez pas de messages (fonctions d'appel) aux classes, vous les envoyez aux instances.

Dans ce cas, vous avez deux instances complètement distinctes de FirstViewController. Le premier est créé en chargeant la plume et le second est créé en -[SecondController turnOnFunction:]. Le message drawingFunction: est envoyé à la deuxième instance lorsque vous souhaitez qu'il soit envoyé au premier.

Vous devez lier l'instance nib de FirstViewController à l'instance SecondController. Vous pouvez le faire avec une sortie dans le constructeur d'interface ou vous pouvez l'assigner lorsque vous créez l'affichage du SecondController.

Questions connexes