2010-11-22 17 views
4

J'ai donc un contrôleur de vue appelé MainViewController avec un bouton qui, lorsque je presse ce code est appelé:Suppression d'un UIView

NewViewController *newViewController; 
newViewController = [[NewViewController alloc] initWithNibName:@"NewView" bundle:nil]; 
[self.navigationController.view addSubview:newViewController.view]; 
[newViewController release]; 

Cela apporte dans la nouvelle vue qui fonctionne très bien. Cependant, comment puis-je supprimer cette vue d'un bouton à l'intérieur? Dans une application que j'ai écrit il ya un moment, j'ai simplement créé une méthode dans MainViewController appelée RemoveView et dans le fichier XIB pour NewViewController j'ai sélectionné FirstResponder, puis RemoveView pour le bouton. Cela fonctionne mais je ne peux pas le reproduire dans mon nouveau projet et je ne comprends pas vraiment comment cela fonctionne quand même!

Ce n'est pas le code d'affichage de suppression que je recherche, mais plutôt le moyen d'appeler la méthode depuis une autre classe.

Si quelqu'un pouvait m'aider, ce serait génial! :)

Merci

Répondre

2

Tracer la ligne dans Interface Builder fait la même chose que d'appeler

[theButton addTarget:theController action:@selector(theAction) forControlEvents:UIControlEventTouchUpInside]; 

theAction doit être une méthode qui est définie avec un type de IBAction.

Pour votre situation, dans votre NewViewController.h, déclarer

- (IBAction)removeView; 

Puis, en NewViewController.m:

- (void)removeView 
{ 
    [self.view removeFromSuperview]; 
} 

Dans votre fichier newView.xib, vous devriez être en mesure de faire glisser une ligne de l'UIButton que vous avez dessiné au propriétaire de votre fichier, et sélectionnez l'action removeView.

+0

Comment voulez-vous configurer 'theController'? –

+0

theController est votre nouveau ViewController dans ce cas. C'est n'importe quelle classe qui contient la méthode que vous souhaitez appeler. – GendoIkari

+0

Mais la méthode est dans le premier contrôleur de vue, 'MainViewController'. Alors, comment puis-je le référencer? –