2012-01-29 2 views
1

У меня есть простая функция, чтобы увидеть, если кнопка коснулась такая же, как текст метки:IOS: Сравнить кнопку нажатой, чтобы маркировать текст

- (IBAction) checkIt:(id)sender{ 
    UIButton *button = (UIButton *)sender; 

    if(button.getText() == randomNumber.text){ 
     randomNumber.text = @"Nice."; 
    } 
    else{ 
     randomNumber.text = @"Try Again"; 
    } 
} 

Где «randomNumber» является этикетка. Однако это не работает. Я новичок Cocoa/Objective-C, и я не уверен, что такое правильный синтаксис.

Я открыт для любой дополнительной информации, которую вы хотели бы/думаю, полезен для идиотов, подобных мне. :)

На этой кнопке отображаются четыре кнопки: корова, свиньи, лягушка, овца. Ярлык «randomNumber» рандомизированы из массива строк «корова, лягушка» ...

ответ

1
if(button.getText() == randomNumber.text) 

Это никогда не будет работать, потому что это не правильный способ сравнения строк. '==' сравнивает только адрес памяти, метод NSString isEqualToString фактически сравнивает строки.

Кроме того, я бы получил текст кнопки, используя свойство titleLabel.text. Итак, я бы попробовал вот так:

- (IBAction) checkIt:(id)sender{ 
    UIButton *button = (UIButton *)sender; 

    if([button.titleLabel.text isEqualToString:randomNumber.text]){ 
     randomNumber.text = @"Nice."; 
    } 
    else{ 
     randomNumber.text = @"Try Again"; 
    } 
} 
+0

Super. Почему мы всегда делаем «если ([...])», а не просто «if (...)»? –

+0

Это зависит от того, что вы делаете в() для сравнения. В этом случае мы используем метод object-C, поэтому мы должны это сделать. Если бы вы сравнивали простые целые числа x & y, это выглядело бы так: if (x = y). – sosborn

+0

Кстати, вы можете проверить конфигурацию сервера для своего сайта :) – sosborn

Смежные вопросы