1

現在 2 つの UIPickerView があり、後でさらに 3 つ追加したいと考えています。コードは以下のとおりです。

-(void)viewDidLoad{
Pos_x = 5;
Pos_y = 70;

for (i= 0; i<2; i++) {

myPickerView = [[UIPickerView alloc] init];
myPickerView.frame = CGRectMake(Pos_x,Pos_y,150,300);
myPickerView.tag = i;
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView];

if (i==0) {
// Init the data array.
Array_1 = [[NSMutableArray alloc] init];

// Add some data for demo purposes.
[Array_1 addObject:@"One"];
[Array_1 addObject:@"Two"];
[Array_1 addObject:@"Three"];
[Array_1 addObject:@"Four"];
[Array_1 addObject:@"Five"];
}

if (i==1) {

Array_2 = [[NSMutableArray alloc] init];

// Add some data for demo purposes.
[Array_2 addObject:@"One1"];
[Array_2 addObject:@"Two1"];
[Array_2 addObject:@"Three1"];
[Array_2 addObject:@"Four1"];
[Array_2 addObject:@"Five1"];  
}

Pos_x = Pos_x + 162;
}
}

タグ付きの 2 つの UIPickerView を正常に作成しました。問題は、UIPickerView にデータを追加することです。

私はこのようにやっています

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

//return [Array_1 objectAtIndex: row];  // If give only this line both UIPickerView show same value.

//How to show both 
//return [Array_2 objectAtIndex: row]; 

// I also tried this code

if(pickerView == myPickerView){

 if (i==0){
 }
 return [Array_1 objectAtIndex: row];
 }

 if (i==1){
 }
 return [Array_2 objectAtIndex: row];
 }


}

今私の質問は、2 つの UIPickerView で異なるデータを表示する方法ですか? pickerview.tag ==0 のように、 return [Array_1 objectAtIndex: row]; が表示されます。そして pickerview.tag ==1 が表示されます return [Array_2 objectAtIndex: row];? どんなアイデアや提案も大歓迎です。

4

3 に答える 3

2

このコードを確認してください:

-(void)viewDidLoad{
myPickerView = [[UIPickerView alloc] init];
myPickerView.frame = CGRectMake(5,70,150,300);
//myPickerView.tag = i;
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView];

Array_1 = [[NSMutableArray alloc] init];

// Add some data for demo purposes.
[Array_1 addObject:@"One"];
[Array_1 addObject:@"Two"];
[Array_1 addObject:@"Three"];
[Array_1 addObject:@"Four"];
[Array_1 addObject:@"Five"];
[Array_1 addObject:@"Six"];


myPickerView_2nd = [[UIPickerView alloc] init];
myPickerView_2nd.frame = CGRectMake(167,70,150,300);
//myPickerView_2nd.tag = i;
myPickerView_2nd.delegate = self;
myPickerView_2nd.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView_2nd];

Array_2 = [[NSMutableArray alloc] init];

// Add some data for demo purposes.
[Array_2 addObject:@"One1"];
[Array_2 addObject:@"Two1"];
[Array_2 addObject:@"Three1"];
[Array_2 addObject:@"Four1"];
[Array_2 addObject:@"Five1"];
[Array_2 addObject:@"Six1"];

}


- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
if([pickerView isEqual: myPickerView]){
// return the appropriate number of components, for instance
return 1;
}

if([pickerView isEqual: myPickerView_2nd]){
// return the appropriate number of components, for instance
return 1;
}
else 
return 0;
}

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


if ( pickerView == myPickerView) // this is otherPickerview
{
    return [Array_1 count];


}
if ( pickerView == myPickerView_2nd){
    return [Array_2 count];


}
else{
     NSUInteger numRows = 5;
    return numRows;}

}

これがあなたを助けることを願っています...

于 2013-02-20T09:46:18.093 に答える
0

配列または辞書を使用してコンテンツ配列を格納し、ピッカーのタグでそれらを取得できます。例:

NSArray *contentArrays = [[NSArray alloc] initWithObjects:Array_1, Array_2, nil];

次に、次のコンテンツ配列を取得します [contentArrays objectAtIndex:pickerView.tag];

于 2013-02-20T09:09:24.610 に答える
0

ピッカービューのタグを設定することでこれを行うことができます:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger) { 
    if(pickerView.tag == 1)
     {
          // do something with picker one
     }
     else if(pickerView.tag == 2)
     {
          // the other picker
     }
}

またはそうでなければ:

   - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger) { 
        switch(pickerView.tag){
           case 1:
               //do something
               break;
           case 2:
               //do other thing
               break;
           default:
               break;
        }
    }

お役に立てれば..

これも見てください:複数の PickerViews in one View?

于 2013-02-20T09:22:10.473 に答える