2010-04-22 2 views
1
UILabel *templabel = [self.wallBoxArray objectAtIndex:i]; 

for(int i = 0 ; i < [self.wallBoxArray count]; i++) 
{ 
    if(templabel.backgroundColor == [UIColor greenColor]) 
    { 
    NSLog(@"the color isn green"); 
    } 
} 

В моем массиве много ярлыков. Все они инициализированы зеленым цветом. Но я так оценил, почему не могу напечатать «цвет не зеленый».Как судить о цвете UILabel?

+0

Я заметил, что вы делали изменения, чтобы поместить ответ в самом вопросе. Это не обязанность; если у вас есть ответ, тогда предоставьте его в качестве ответа, если кто-то ответит на ваш вопрос, и это самый полезный знак, как правильный, используя зеленую галочку. –

+0

@RichardTingle Привет, Ричард, вы знаете, что моей учетной записи было запрещено задавать вопросы. Хотя я прочитал центр «Помощь», но я до сих пор не могу найти причины. Я старался ставить свои старые вопросы и ответы более четко. Не могли бы вы мне помочь? Огромное спасибо! –

+0

глядя на ваш профиль; это должно быть из удаленных вопросов. У вас много вопросов было удалено? –

ответ

4

Класс кластера UIColor реализует -isEqual:, так что вы могли бы просто использовать

if([templabel.backgroundColor isEqual:[UIColor greenColor]]) 
    ... 
+0

hah, правый, забыл про это ... * ладонь-> лоб * –

1

Вы выполняете сравнение указателей там, поэтому, если цвета являются зелеными, но разными экземплярами UIColor, это не сработает. . потому что свойство BackgroundColor UIView является собственностью копия

@property(nonatomic, copy) UIColor *backgroundColor 

Я вроде удивлен в том, что запутанным, но для проверки равенства, попробуйте следующее:

CGColorEqualToColor([templabel.backgroundColor CGColor], [[UIColor greenColor] CGColor]) 

Это проверка равенства значение цвета, а не просто сравнение указателей. er чтобы сделать [str compare:otherString] == NSOrderSame при проверке строк!

+0

Или '[str isEqualToString: otherString]'. –