1

textField の inputView を持つ UIPickerView ディスプレイがあります。pickerView を 2 つの列に分割しました。1 つは 50 ~ 500 の整数です。もう 1 つは 0.25、0.50、0.75 です。整数を選択してから、数値の小数部分を他の列で選択できるようにしたいと考えています。「完全な」番号を表示する方法がわかりません。2 番目の列を移動すると、列 1 の移動として登録され、整数が変更されます。ユーザーが整数、数値の小数部分、ヒット完了、テキストフィールドに「100.25」形式の数値または選択した数値を表示できるようにしたい。完了ボタンをコーディングしました...そして、整数は「100」などの形式で表示されます。

ありがとう!

アップデート!!!コード!!!!

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:  (NSInteger)component{
if ([pickerView isEqual:weightPickerView]) {
    weightField.text = [NSString stringWithFormat:@"%d.%d",[weightPickerArray   objectAtIndex:row], [weightPickerArray2 objectAtIndex:row]];



-(void)populateWeightPickerArray{
weightPickerArray = [[NSMutableArray alloc] init];
for (int weight = 50; weight <=500; weight++) {
    NSString *weightString = [NSString stringWithFormat:@"%d%",weight];
    [weightPickerArray addObject:weightString];
}
}

-(void)populateWeightPickerArray2{
weightPickerArray2 = [[NSMutableArray alloc] init];
[weightPickerArray2 addObject:@"0.25"];
[weightPickerArray2 addObject:@"0.50"];
[weightPickerArray2 addObject:@"0.75"];
}

したがって、ユーザーに体重を選択してもらいたいです。たとえば、列 1 で 100、列 2 で 0.25 です。次に、テキスト フィールドに 100.25 を表示したい...

アップデート2!コードを変更したところ、エラーが発生しました..

[セッションは 2012-08-03 10:39:39 -0500 で開始されました。 -03 10:39:45.661 CalorieAppFinal[1088:207] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。

これが私のweightPickerを初期化する方法です

 -(IBAction)weightFieldDidBeginEditing{
weightPickerView = [[UIPickerView alloc] init];
weightField.inputView = weightPickerView;
weightPickerView.showsSelectionIndicator = YES;
weightPickerView.delegate = self;
weightPickerView.dataSource = self;
[weightPickerView release];
}


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

if ([pickerView isEqual:weightPickerView]) {
    int valOne = [[weightPickerArray objectAtIndex:row] intValue];
    CGFloat valTwo = [[weightPickerArray2 objectAtIndex:row] floatValue];
    weightField.text = [NSString stringWithFormat:@"%d.%.2f",valOne, valTwo];
}


-(void)populateWeightPickerArray{
weightPickerArray = [[NSMutableArray alloc] init];
for (int weight = 50; weight <=500; weight++) {
    [weightPickerArray addObject:[NSNumber numberWithInt:weight]];
}
 }

-(void)populateWeightPickerArray2{
weightPickerArray2 = [[NSMutableArray alloc] init];
[weightPickerArray2 addObject:[NSNumber numberWithFloat:0.25f]];
[weightPickerArray2 addObject:[NSNumber numberWithFloat:0.50f]];
[weightPickerArray2 addObject:[NSNumber numberWithFloat:0.75f]];
 }
4

3 に答える 3

1

**最初の回答が少し混乱したため編集

文字列に浮動小数点数または 10 進数を表示する場合、2 つの一般的な方法があります。

stringWithFormat
stringByAppendingFormat

したがって、2 つの別々のメソッドをトリガーする 2 つの列/ピッカーがある場合、または同じメソッドをトリガーしているが特定のピッカーをチェックしている場合は、次のようにすることができます。

- (void)somePickerDidChangeValueMethod:(UIPicker)picker
{
    //If you have on float value
    myTextField.text = [NSString stringWithFormat:@"%.2f",yourFloatValue];
            //the %.xf represents how many decimal places to show
    //If you have two int values
    myTextField.text = [NSString stringWithFormat:@"%d.%d",int1,int2];


    //If incoming number is a float
    myTextField.text = [myTextField.text stringByAppendingFormat:@".%.0f",yourFloatValue];
    //If incoming number is an int
    myTextField.text = [myTextField.text stringByAppendingFormat:@".%d",intVal];
}

うまくいけば、これが役に立ちます。

于 2012-08-01T05:47:33.217 に答える
1

これを試して:

-(void)populateWeightPickerArray2
{
    weightPickerArray2 = [[NSMutableArray alloc] init];
    [weightPickerArray2 addObject:@".25"];  /* remove the leading zero */
    [weightPickerArray2 addObject:@".50"];  /* remove the leading zero */
    [weightPickerArray2 addObject:@".75"];  /* remove the leading zero */
}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if ([pickerView isEqual:weightPickerView]) 
    {
        /* Updated the following line with selectedRowinComponent */
        weightField.text = [NSString stringWithFormat:@"%@%@",[weightPickerArray objectAtIndex:[weightPickerView selectedRowInComponent:0]], [weightPickerArray2 objectAtIndex:[weightPickerView selectedRowInComponent:1]]];
    }
}

数値を計算に使用するには:

float number = [weightField.text floatValue];

"0.25"、"0.50"、および "0.75" を表示する場合は、小数点セグメントを整数セグメントに追加する前に、先頭のゼロを削除するためにいくつかの文字列操作を実行する必要があります。この投稿を参照してください

于 2012-08-02T03:25:24.480 に答える
0

この下の回答を使用できますが、後で数学で値を使用する予定がある場合は、長期的には NSNumber を使用する方がおそらく簡単です。あなた次第 - どちらもうまくいくでしょう。

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if ([pickerView isEqual:weightPickerView])
    {
        int valOne = [[weightPickerArray objectAtIndex:row] intValue];
        CGFloat valTwo = [[weightPickerArray2 objectAtIndex:row] floatValue];
        weightField.text = [NSString stringWithFormat:@"%d.%.2f",valOne,valTwo];
    }
}


-(void)populateWeightPickerArray
{
    weightPickerArray = [[NSMutableArray alloc] init];
    for (int weight = 50; weight <=500; weight++)
    {
        //easier to store NSNumberWithInt as opposed to a string
        [weightPickerArray addObject:[NSNumber numberWithInt:weight]];
    }
}

-(void)populateWeightPickerArray2
{
    weightPickerArray2 = [[NSMutableArray alloc] init];
    [weightPickerArray2 addObject:[NSNumber numberWithFloat:0.25f]];
    [weightPickerArray2 addObject:[NSNumber numberWithFloat:0.50f]];
    [weightPickerArray2 addObject:[NSNumber numberWithFloat:0.75f]];
}

そのようなことを試してみてください。

それが役に立てば幸い。

于 2012-08-02T04:01:21.143 に答える