Как бы я сравнил заголовок UIButton backgroundImage? - PullRequest
7 голосов
/ 01 апреля 2011

На UIButton я устанавливаю фоновые изображения, как это

[twitterButton setBackgroundImage:twitterImage forState:UIControlStateNormal];

twitterImage имеет тип UIImage

Теперь где-то в коде по любой нажатой кнопке я устанавливаю изображение twitterButton, используя значение тега

[twitterButton setBackgroundImage:twitterImage1 forState:UIControlStateNormal];

Моя проблема в том, как бы я сравнил изображение twitterButton?

это условие не работает if([twitterbutton.imageView.image isEqual:twitterImage1])

Пожалуйста, помогите

Ответы [ 4 ]

10 голосов
/ 01 апреля 2011

Попробуйте сравнить с UIImage, возвращаемым методом backgroundImageForState: вместо свойства image UIButton imageView ...

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

е.,

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

См. Справочник по классу UIB для получения дополнительной информации.

2 голосов
/ 01 апреля 2011

Вы не можете сравнивать backgroundImage UIButton's. Вы устанавливаете backgroundImage, используя некоторую ссылочную переменную

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html

1 голос
/ 01 апреля 2011

Попробуйте использовать свойство currentBackgroundImage UIButton.Это даст вам текущее фоновое изображение .. UIButton Reference

0 голосов
/ 01 апреля 2011

Я думаю, что это дорого, но вы можете попробовать преобразовать изображения в nsdata, а затем использовать isEqualToData.

Редактировать

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

if([data1 isEqualToData:data2]){

}
...