У UIPicker есть хотя бы одно значение в футах? - PullRequest
0 голосов
/ 13 января 2012

Как и в приложении с таймером для яблок, вы не можете выбрать «0». Вы должны выбрать как минимум 1 час или 1 минуту. Вот как я форматирую текстовое поле для выбора.

//Formats the textfield based on the pickers.
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

NSString *result = [feetArray objectAtIndex:[feetPicker selectedRowInComponent:0]];

result = [result stringByAppendingFormat:@"%@ft", [feetArray objectAtIndex:[feetPicker selectedRowInComponent:1]]];
result = [result stringByAppendingFormat:@" %@", [inchArray objectAtIndex:[inchesPicker selectedRowInComponent:0]]];
result = [result stringByAppendingFormat:@"%@", [inchArray objectAtIndex:[inchesPicker selectedRowInComponent:1]]];
result = [result stringByAppendingFormat:@" %@in", [fractionArray objectAtIndex:[fractionPicker selectedRowInComponent:0]]];

RiseTextField.text = result;
}

Что мне нужно, если они полностью выберут «0», я хочу, чтобы нога автоматически перешла на 1 на сборщике. У меня есть 3 сборщика, на мой взгляд, как один. 2 компонента для ног, 2 компонента для дюймов, затем 1 компонент для фракций. поэтому он отображается в текстовом поле как 10f 09 1 / 16in.

1 Ответ

1 голос
/ 13 января 2012

По сути, вы хотите сделать следующее: (при условии, что строка 0 содержит нулевые значения)

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    if (([feetPicker selectedRowInComponent:0] == 0)&&
        ([feetPicker selectedRowInComponent:1] == 0)&&
        ([inchesPicker selectedRowInComponent:0] == 0)&&
        ([inchesPicker selectedRowInComponent:1] == 0)&&
        ([fractionPicker selectedRowInComponent:0] == 0)){
        // All values zero
        [feetPicker selectRow:1 
                  inComponent:1 
                     animated:YES];
        return;
    }
    // Handle valid value
}

Что касается примечания, рассмотрите возможность использования NSMutableString для result. Затем вместо создания новой NSString каждой строки вы можете просто позвонить [result appendFormat:@"...., чтобы изменить имеющуюся у вас.

...