2010-10-22 2 views
0

кажется довольно простой проблемой, но я не понимаю. У этого есть два UIButton, один под названием «следующий», другой - «предыдущий». Оба связаны с одним и тем же методом. Все, что я хочу сделать, это изменить переменную «helpStatus'depending, на которой нажата кнопка:Проблема с именем отправителя UIButton

if([sender currentTitle] == @"next"){ 
     helpStatus++; 
    } 
    if ([sender currentTitle] == @"previous"){ 
     helpStatus--; 
    } 

    NSLog(@"%@", [sender currentTitle]); 

регистрируемые titels являются„следующий“и„предыдущий“так же, как это должно быть, но он не работает, и я дон Не знаю почему.

ответ

4

Вы должны использовать isEqualToString в противном случае вы просто сравнение, если они и тот же объект, а не если они равны :)

if([[sender currentTitle] isEqualToString:@"next"]){ 
    helpStatus++; 
} 
if ([[sender currentTitle] isEqualToString:@"previous"]){ 
    helpStatus--; 
} 
+0

Просто чтобы прояснить, что означает, что они являются таким же объектом в памяти, а не та же строка. :) – gabaum10

+0

@ Geoff Baum - Спасибо :) – willcodejavaforfood

3

Я бы не использовать строку. Что произойдет, если вы решите изменить ярлык? Вместо этого рассмотрите использование тега.

например. б

button.tag = 100; 

    ... 

- (void)buttonPressed:(id)sender { 
    UIButton *button = (UIButton*)sender; 

    if(button.tag == 100) { 

    } 
} 

или в вашем случае (я шучу, вроде), даже:

button1.tag = 1; 
button2.tag = -1; 

     ... 

- (void)buttonPressed:(id)sender { 
    UIButton *button = (UIButton*)sender; 
    helpStatus+= button.tag; 
Смежные вопросы