2013-08-14 3 views
-3

Я пытаюсь сделать кнопку, которая сначала щелкнет, она говорит «Алабама», а второй щелчок «аляска». Я использую оператор if, но когда я запускаю симулятор, «Аляска» приходит с первого щелчка. что я сделал не так?Если оператор не работает с симулятором

- (IBAction)button1:(id)sender { 
    hellolabel.text = @"Alabama"; 

    if([hellolabel.text isEqual:@"Alabama"]) 
     hellolabel.text = @"Alaska"; 
} 
+0

Вы пробовали 'если ([hellolabel.text isEqualToString: @ "Алабама"])'? – mohkhan

+0

Да, случилось то же самое! – Mau5Karl

+0

'isEqual' должен работать здесь, хотя это не так безопасно, как' isEqualToString'. –

ответ

4

Ваш код установлен неправильно.

На самом деле он устанавливает оба состояния (Алабама, а затем Аляска), но поскольку он работает так быстро, вы не видите, что он установил Алабаму.

Поскольку:

hellolabel.text = @"Alabama"; 

предшествует if заявление, он установит hellolabel.text в Алабаме. Но поскольку оператор if также содержится в одном и том же действии, он будет продолжать его запускать (так как код здесь выполняется последовательно), без остановки. А так как вы только что установили hellolabel.text в Алабаму, ваш оператор if установит его на Аляску, увидев, что он соответствует критериям, которые он проверяет (if([hellolabel.text isEqualToString:@"Alabama"])).

правильный код так, что он будет проверять правильно, будет выглядеть так:

- (IBAction)button1:(id)sender { 

    if([hellolabel.text isEqualToString:@"Alabama"]) 
    { 
     hellolabel.text = @"Alaska"; 
    } 
    else 
    { 
     hellolabel.text = @"Alabama"; 
    } 
} 
+0

, когда я использую «else {», появляется ошибка «Ожидаемый идентификатор» или (« – Mau5Karl

+0

» Вы скопировали код точно? – CaptJak

+0

да, но hellolabel.text = @ «Алабама» не существует? – Mau5Karl

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