Вы видите что-то не так в этом коде? Потому что я не могу, но все равно не работает - PullRequest
0 голосов
/ 10 февраля 2010
// When row is selected
- (void)pickerView:(UIPickerView *)pickerTimer didSelectRow:(NSInteger)row inComponent:(NSInteger)component {   
    int minutes;
    int seconds;

    if (component == 0) {
        if (row < 0){
            minutes = row;
        } else {
            minutes = 0;
        }
    }
    if (component == 1) {
        if (row < 0){
            seconds = row;
        } else {
            seconds = 0;
        }
    }
    NSLog([NSString stringWithFormat:@"%f %f %d", minutes, seconds, row]);
    if (minutes != 0 && seconds != 0){
        [buttonTimer setTitle:[NSString stringWithFormat:@"%@ minutes and %@ seconds", minutes, seconds] forState:UIControlStateNormal];
    // Yes, I am trying to set the label of a button.
    }
    if (minutes == 0 && seconds != 0){
        [buttonTimer setTitle:[NSString stringWithFormat:@"%@ seconds", seconds] forState:UIControlStateNormal];
    }
    if (minutes != 0 && seconds == 0){
        [buttonTimer setTitle:[NSString stringWithFormat:@"%@ minutes", minutes] forState:UIControlStateNormal];    
    }
    if (minutes == 0 && seconds == 0){
        [buttonTimerFarts setTitle:[NSString stringWithFormat:@"Set time before play starts..."] forState:UIControlStateNormal];
    }

}

Консоль будет отображать такие вещи, как

0.000000 -1.993950 2751746

Три первых оператора if (минуты-секунды) никогда не выполняются.

Итак, вы видите что-то не так?

1 Ответ

3 голосов
/ 10 февраля 2010

В вашем коде, только если row < 0, minutes или seconds установлено на row. Но в вашем примере row положительно, поэтому minutes и seconds все еще оба 0, и первые три if никогда не верны.

И я не знаю много о Objective-C, но вы печатаете целое число с% f, и это может привести к бессмысленности.

...