0

私は UIPickerView を持っていて、2 つの列に配列の項目を入力したいのですが、その方法がわかりません。私の配列があります:

-(void)fillingStandartWeightArray{

    if (!standartWeightArray){
        for (int i=25; i<150 ;i++){
            NSString *weightString;
            weightString = [NSString stringWithFormat:@"%d kg", i];
            [standartWeightArray addObject:weightString];
            NSLog(@"%@", weightString);
        }
    }

}

-(void)fillingStandartHeightArray{

    if (!standartHeightArray){
        for (int i=85; i<250; i++){
            NSString *heightString;
            heightString = [NSString stringWithFormat:@"%d cm", i];
            [standartHeightArray addObject:heightString];
            NSLog(@"%@", heightString);
        }
    }

}

より具体的に言うと、UIPickerView にそのホイールの 1 つを 1 つの配列で埋め、もう 1 つを他の配列で埋めるように「指示」する方法がわかりません。私はこれを試しました:

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{


    if (component == 0){
        return [standartWeightArray count];
    }   else {
        return [standartHeightArray count];
    }
}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return 2;
}

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

    if (component == 0)
        return [standartWeightArray objectAtIndex:row];
    else if (component == 1)
        return [standartHeightArray objectAtIndex:row];
}

そして、viewDidLoadセクションで関数を呼び出しました:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self fillingStandartWeightArray];
    [self fillingStandartHeightArray];
    NSLog(@"%@", standartWeightArray);

}

しかし、それはうまくいきません。

4

2 に答える 2

1

データソース/デリゲート メソッドは完璧です。

以下のことを心がけてください

standartHeightArray1) オブジェクトをstandartWeightArray 適切に割り当てます。まだ行っていない場合は、以下のように配列オブジェクトを割り当てます。

-(void)fillingStandartWeightArray{

    if (!standartWeightArray){
   // Allocate the array
       standartWeightArray = [NSMutableArray new];
        for (int i=25; i<150 ;i++){
            NSString *weightString;
            weightString = [NSString stringWithFormat:@"%d kg", i];
            [standartWeightArray addObject:weightString];
            NSLog(@"%@", weightString);
        }
    }

}

-(void)fillingStandartHeightArray{

    if (!standartHeightArray){
   // Allocate the array
        standartHeightArray = [NSMutableArray new];
        for (int i=85; i<250; i++){
            NSString *heightString;
            heightString = [NSString stringWithFormat:@"%d cm", i];
            [standartHeightArray addObject:heightString];
            NSLog(@"%@", heightString);
        }
    }

}

2)delegate/datasourceピッカーのプロパティを適切に接続します。viewDidLoadこれは、インターフェイス ビルダーまたはコード ( )で実行できます。

于 2013-04-03T22:49:27.697 に答える