2011-08-14 1339 views
6

Actualmente estoy tratando de averiguar si es posible verificar qué imagen utiliza un botón.Cómo verificar una imagen de botones en Xcode

Digamos que tengo image1 e image2.

Si la imagen de los botones es image1 haz esto y si la imagen de los botones es image2 hazlo.

pero tampoco Xcode me da ninguna opción de autocompletar ....

[m1 setImage:[UIImage imageNamed: @"Penguin.png"] forState:UIControlStateNormal]; 

Así es como me puse las imágenes. pero ¿cómo puedo averiguar si es Penguin o Penguin2?

Respuesta

6

Cocoa Touch fue diseñado según el patrón Model-View-Controller, por lo que es posible que desee intentar adoptar ese patrón. En lugar de tratar de recuperar la información de estado, el pingüino seleccionado, desde la vista, el botón, almacenarlo en una variable de instancia en su clase de controlador.

Su código para configurar la imagen podría tener este aspecto:

self.currentImage = @"Penguin.png"; 
[m1 setImage:[UIImage imageNamed: currentImage] forState:UIControlStateNormal]; 

Luego, cuando es necesario comprobar el valor:

if ([@"Penguin.png" isEqual:self.currentImage]) { 
    do something; 
} 
3

Comprobación de la igualdad de las imágenes se realiza de este modo:

if ([[UIImage imageNamed:@"Penguin.png"] isEqual:m1.currentImage]) { 
    // do something 
} 
+0

No creo que esto podría funcionar, bec porque estás tratando de comparar dos instancias diferentes del mismo padre. Siempre debe imprimir falso –

+0

Funciona en mi máquina. Pruébalo. – nicholjs

+0

Esto solo funcionará si configura la imagen en m1 desde el método [UIImage imageNamed:], ya que mantiene la conexión todo el tiempo que se usa, pero si intenta establecer por [[UIImage alloc] initWithContentsOfFile:] siempre será falso –

2

2 métodos se pueden utilizar para esto:

1.

UIImage *image = self.myButton.currentBackgroundImage; 

2.

myImageView.image = [myButton backgroundImageForState:myButton.state]; 
2
UIImage *img=[(UIButton *) sender currentImage]; 

if(img == [UIImage imageNamed:@"edit"]) 
{ 
    //If do something 
}` 

tratar esta esperanza de que funcione

+0

Si no funciona, agregue @ "edit.png" o el formato de la imagen. para mí está funcionando correctamente – krishh

5

Sólo utilice este código para el botón de acción sobre la base de la imagen

- (IBAction)checkButtonClicked:(UIButton *)sender { 

    if ([checkButton.currentImage isEqual:[UIImage imageNamed:@"checkbox.png"]]) 
     [checkButton setImage:[UIImage imageNamed:@"Checked.png"] forState:UIControlStateNormal]; 
//do some thing here for your image1 

     else 
    [checkButton setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal]; 
    //do some thing here for your image 2 

} 
Cuestiones relacionadas