0

2 つの列 pickerView があります。最初の列には、km、フィートなどの単位があります。km 1,2,3 とフィート 100, 2000, 300 の両方に異なる値を設定したいのですが、次のコードを実行しました。viewDidLoad メソッドで unitArray と distanceArray の 2 つの配列を宣言します。

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
        return 2;
}

-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

if (component == UNIT)
       return [unitArray objectAtIndex:row];
else
       return [distanceArray objectAtIndex:row];
}

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

        distanceRow = [distancePicker selectedRowInComponent:DISTANCE];
        unitRow = [distancePicker selectedRowInComponent:UNIT];

        dist = [distanceArray objectAtIndex:distanceRow];
        unit = [unitArray objectAtIndex:unitRow];

        txtIBOutletDistance.text =[NSString stringWithFormat:@"%@ %@",dist,unit];
}

このコードを実行した後、km とフィートの両方に同じ値を表示しています。つまり、km とフィートを 1 つの列に、1,2,3 を 2 列目に表示しています。選択した後、km の値は 1,2,3 で、フィートの選択値は 100,200,300 にする必要があります。誰かがそれを行う方法を知っているなら、私を助けてください。私は彼/彼女に感謝します。

4

1 に答える 1

0

以下のように、選択した UNIT に従って pickerView:didSelectRow:inComponent の distanceArray の値を変更する必要があります。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    if(component == UNIT) {
        unit = [unitArray objectAtIndex:row]; //unit is a property of the interface
        if([unit IsEqualToString:@"km"] {
            distanceArray = [NSArray arrayWithObject:@"1", @"2", @"3", nil];
        } else if([unit IsEqualToString:@"feet"] {
            distanceArray = [NSArray arrayWithObject:@"100", @"200", @"300", nil];
        }
    } else {
        dist = [distanceArray objectAtIndex:row];
        txtIBOutletDistance.text =[NSString stringWithFormat:@"%@ %@",dist,unit]; 
    }
}
于 2012-05-20T12:09:20.570 に答える