2010-07-25 8 views
13

J'ai une méthode hideButtoneffectuer: @selector en utilisant une méthode avec des paramètres

-(void) hideButton:(UIButton) *button { 
[button setHidden:YES]; 
} 

et je reçois une erreur « ne peut pas utiliser un objet comme paramètre à une méthode ».

Je veux être en mesure de donner le bouton comme un paramètre à la méthode en appelant cette

[self performSelector:@selector(hideButton:smallestMonster1) 
withObject:nil afterDelay:1.0]; 

Comment cela peut-il être fait? comme la tentative ci-dessus ne fonctionne pas. Je dois pouvoir donner le bouton comme paramètre ou au moins faire savoir à la méthode quel bouton appelle pour être caché après 1 seconde.

Merci

Répondre

20

Vous pouvez passer le paramètre au sélecteur via withObject paramètre:

[self performSelector:@selector(hideButton:) withObject:smallestMonster1 afterDelay:1.0]; 

Notez que vous pouvez passer au maximum 1 paramètre de cette façon. Si vous devez transmettre plus de paramètres, vous devrez utiliser la classe NSInvocation pour cela.

Edit: correcte déclaration de méthode:

-(void) hideButton:(UIButton*) button 

Vous devez mettre à l'intérieur Type de paramètre(). Votre méthode hideButton reçoit le pointeur vers UIButton, donc vous devriez mettre UIButton*

+0

Merci. Comment la méthode hideButton est-elle définie pour prendre l'objet en paramètre? Si j'essaie ce qui précède, je ne peux pas utiliser l'objet comme erreur de paramètre/ – jarryd

+0

On ne sait pas quel est le problème ... la définition de la méthode hideButton est correcte et elle devrait être appelée correctement avec ma réponse ... en 1er paramètre performSelector - vous fournissez signature du sélecteur, dans withObject - l'objet en tant que paramètre à transmettre au sélecteur. – Vladimir

+0

De toute façon, si j'essaie le bouton hideButton (UIButton), j'obtiens une erreur, et si j'essaie le bouton hideButton (UIButton) *, j'obtiens une erreur. J'ai également essayé d'utiliser (id) mais l'application se bloque avec un sélecteur non reconnu envoyé à une erreur d'instance. – jarryd

Questions connexes