Cocoa Touch - заголовок UISegmentedControl не работает в выражении IF / ELSE - PullRequest
0 голосов
/ 26 августа 2010

Я пытаюсь написать базовый конвертер DST. У меня есть сегментированный элемент управления с 3 вариантами выбора, их названия (на удивление): Расстояние, Скорость и Время. У меня есть 2 поля ввода текста и кнопка расчета, а также 2 метки для каждого текстового поля с указанием типа требуемого измерения и его единиц измерения. Выбор элемента в сегментированном элементе управления должен соответствующим образом обновить представление. Все переменные были объявлены как IBOutlets, @property, @synthesize, а код находится в методе IBAction, который связан с сегментированным элементом управления. Следующий код не работает, я что-то упускаю совершенно очевидно? (NSLog показывает правильный заголовок)

NSString *choice;    
choice = [dstChoiceSegmentedControl titleForSegmentAtIndex: dstChoiceSegmentedControl.selectedSegmentIndex];
    NSLog(@"Choice |%@|", choice);
    if (choice == @"Distance") {
        firstLabel.text = @"Speed:";
        firstUnitsLabel.text = @"kts";
        secondLabel.text = @"Time:";
        secondUnitsLabel.text = @"hrs";
        answerUnitsLabel.text = @"nm";
    } else if (choice == @"Speed") {
        firstLabel.text = @"Distance:";
        firstUnitsLabel.text = @"nm";
        secondLabel.text = @"Time:";
        secondUnitsLabel.text = @"hrs";
        answerUnitsLabel.text = @"kts";
    } else if (choice == @"Time") {
        firstLabel.text = @"Distance:";
        firstUnitsLabel.text = @"nm";
        secondLabel.text = @"Speed:";
        secondUnitsLabel.text = @"kts";
        answerUnitsLabel.text = @"hrs";
    }

Спасибо за вашу помощь (и я надеюсь, что это не какая-то глупая ошибка, которая смотрит мне прямо в лицо)!

1 Ответ

0 голосов
/ 26 августа 2010

Вы не можете сравнивать строки таким образом. Вам нужно сделать:

[choice isEqualToString:@"Distance"];

Но на вашем месте я бы проверил признаки.

edit: Чтобы объяснить это далее: то, что вы делаете с choice == @"Distance", сравнивает указатель со строкой, которая не будет работать Вам нужно вызвать метод сравнения строковых объектов, как показано выше.

...