0

就像 Apples 计时器应用程序一样,您不能选择“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。

4

1 回答 1

1

基本上你想要做的是:(假设第 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
}

在旁注中考虑使用NSMutableStringfor result。然后,您无需创建新的NSString每一行,只需调用[result appendFormat:@"....即可修改您拥有的行。

于 2012-01-13T07:22:01.390 回答