2013-02-20 47 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];

相關問題