2013-02-20 26 views
1

我有2 UIPickerView现在,我想添加三个later.The代码如下:如何用标签创建五个UIPickerView?如何在iPhone中给每个UIPickerView赋予不同的名称?

-(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; 
} 
} 

我已经成功地创建了两个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]; 
} 


} 

现在我的问题是,如何显示在两个不同的UIPickerView不同的数据?就像在pickerview.tag == 0它会显示返回[Array_1 objectAtIndex:row]; 和pickerview.tag == 1它会显示返回[Array_2 objectAtIndex:row];? 任何想法或建议将受到欢迎。

+0

你不应该去要'如果(pickerView.tag == 0)'而不是'if(i == 0)' – Fonix 2013-02-20 09:05:07

+0

我已经完成了这个工作,但是dint的工作。 – 2013-02-20 09:14:24

+0

我的意思是在titleForRow方法中,它没有任何意义,因为'i'甚至没有定义,所以你要'if(i == 0)'在那里。除非你省略了一些代码 – Fonix 2013-02-20 09:18:09

回答

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;} 

} 

希望这将帮助你......

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; 
     } 
    } 

希望这有助于

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

然后通过设置pickerview的标签获得与[contentArrays objectAtIndex:pickerView.tag];

相关问题