2011-04-01 18 views
7

En un UIButton puse imágenes de fondo como este¿Cómo compararía UIButton backgroundImage title?

[twitterButton setBackgroundImage:twitterImage forState:UIControlStateNormal]; 

twitterImage es de tipo UIImage

Ahora en alguna parte del código en cualquier botón hace clic la imagen twitterButton puse utilizando el valor de etiqueta

[twitterButton setBackgroundImage:twitterImage1 forState:UIControlStateNormal]; 

Mi problema es ¿Cómo compararía la imagen de TwitterButton?

esta condición no está funcionando if([twitterbutton.imageView.image isEqual:twitterImage1])

Por favor, ayudar a

Respuesta

10

intente comparar contra el UIImage devuelto por el backgroundImageForState: método en lugar de la imagen de la propiedad UIButton imageView ...

if ([[twitterButton backgroundImageForState:UIControlStateNormal] isEqual:twitterImage1]) 

decir. ,

if ([[twitterButton backgroundImageForState:UIControlStateNormal] isEqual:[UIImage [email protected]"myImage.png"]]){ 
    // Button has a background image named 'myImage.png' 
}else{ 
    // Button has not a background image named 'myImage.png' 
} 

Consulte el UIButton class reference para obtener más información.

+0

Sólo probamos este \t si ([[twitterBtn backgroundImageForState : UIControlStateNormal] isEqual: twitterImage1]) ..... no funciona :( – Tariq

+0

¿Cuántas instancias de la imagen física está cargando? Si es la misma instancia de objeto que se establece en varios lugares, entonces esto debería funcionar. De lo contrario, tendrá para comparar los datos de la imagen ... – mmccomb

+0

Uso de la etiqueta He creado una sola instancia. Todos los p roperty funcionan como puedo cambiar las imágenes ... deshabilitar ... habilitar ... pero solo la comparación de imágenes de fondo no funciona – Tariq

0

Creo que es caro, pero puede intentar convertir las imágenes en nsdata y luego usar isEqualToData.

Editar

NSData *data1=UIImagePNGRepresentation([twitterButton backgroundImageForState:UIControlStateNormal]); 
NSData *data2=UIImagePNGRepresentation(anotherUIImage); 

if([data1 isEqualToData:data2]){ 

} 
+0

cómo compararía NSData ... me gustaría que la condición sería así ... if (UIIMagePng ......) ..... pero en esta condición, ¿cómo cargaría el botón de fondo Imagen? – Tariq

+0

He editado mi publicación. Espero que esto ayude. – Jorge

+0

Gracias por su respuesta ... Debido a un requisito urgente, he solucionado este problema por bandera. Ahora comparo la bandera de bool en lugar de la imagen :) – Tariq

1

Trate de usar la propiedad currentBackgroundImage de UIButton. Esto le dará la imagen de fondo actual .. UIButton Reference

+0

Tengo intentado esto \t \t if ([twitterBtn.currentBackgroundImage isEqual: @ "btn_twitter_normal_small1.png"]) No funciona ... ¿hay alguna otra forma de utilizar la propiedad currentBackgroundImage? – Tariq

+0

Recuerda que devuelve un UIImage, por lo que debes verificarlo y no el nombre de la imagen. Si eso tampoco funciona intente isEqualTo: – visakh7

+0

puede probar [twitterBtn.currentBackgroundImage isEqual: twitterImage1] – visakh7