在UIPickerView上选择后显示整数值?

时间:2013-07-10 16:10:13

标签: ios objective-c uipickerview

目前我有一点编码问题。我有一个带有7种不同选项的选择器,目前用于测试目的我有一个标签,它将显示选择器的选择值。

我遇到的问题是我的标签只显示整数,而不是显示整个十进制数,有人可以帮助我,以便我可以在选择器中获得所选项目的全部价值吗?

这是我的代码:

// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [tempList count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [tempList objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)pickerView
      didSelectRow:(NSInteger)row
       inComponent:(NSInteger)component {

   CGFloat chosenValue;

    switch (row) {
        case 0:
            chosenValue = 0.0000373;
            break;
        case 1:
            chosenValue = 0.0000273;
            break;
        case 2:
            chosenValue = 0.0000233;
            break;
        case 3:
            chosenValue = 0.0000204;
            break;
        case 4:
            chosenValue = 0.0000179;
            break;
        case 5:
            chosenValue = 0.0000169;
            break;
        case 6:
            chosenValue = 0.0000142;
            break;
        default:
            chosenValue = 0;
            break;
    }

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
    formatter.numberStyle = NSNumberFormatterDecimalStyle;

self.testLabel.text = [formatter stringFromNumber:@(chosenValue)];


}

3 个答案:

答案 0 :(得分:2)

您需要指定精度:

self.textLabel.text = [NSString stringWithFormat:@"%.7f", chosenValue];

%f格式说明符默认为5位小数。

您可能需要将chosenValue更改为double才能获得足够的有效数字。

更好的是,由于您使用的是NSNumberFormatter,请设置小数位数:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.minimumFractionDigits = 7;

答案 1 :(得分:0)

为什么不使用NSString stringWithFormat方法?

self.textLabel.text = [NSString stringWithFormat:@"%.10f", chosenValue];

答案 2 :(得分:0)

试试这个:

self.testLabel.text = [NSString stringWithFormat:@"%.10f",chosenValue];

而不是:

self.testLabel.text = [formatter stringFromNumber:@(chosenValue)];