2010-07-25 18 views
13

Tengo un método hideButtonrealizar: @selector usando un método con parámetros

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

y recibo un error "no se puede utilizar un objeto como parámetro a un método".

Quiero ser capaz de darle al botón como un parámetro para el método cuando se llama a este

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

¿Cómo puede hacerse esto? como el intento anterior no funciona. Necesito poder dar el botón como parámetro o, al menos, hacer que el método sepa qué botón está oculto después de 1 segundo.

Gracias

Respuesta

20

Puede pasar parámetros a través del selector de withObject parámetro:

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

Nota que puede pasar a lo sumo 1 parámetro de esta manera. Si necesita pasar más parámetros, necesitará usar la clase NSInvocation para eso.

Editar: declaración de método correcto:

-(void) hideButton:(UIButton*) button 

Debe poner parámetro de tipo interior(). Su método hideButton recibe un puntero a UIButton, por lo que debe poner UIButton* allí

+0

Gracias. ¿Cómo se configura el método hideButton para tomar el objeto como parámetro? Si pruebo lo anterior, obtengo el objeto can not use como error de parámetro/ – jarryd

+0

No está claro cuál es el problema ... La definición del método hideButton está bien y debería llamarse correctamente con mi respuesta ... en el primer parámetro performSelector - proporcionas firma del selector, en withObject - el objeto como un parámetro para pasar al selector. – Vladimir

+0

De cualquier manera, si intento el botón hideButton (UIButton), aparece un error y, si intento el botón hideButton (UIButton) *, aparece un error. Traté de usar (id) también, pero la aplicación falla con el selector no reconocido enviado al error de instancia. – jarryd

Cuestiones relacionadas