如何将多个组件添加到PickerView?

这可能是一个简单的问题,但是如何将多个组件添加到UIPickerView? 我使用NSMutableArray来填充一个组件,但我不知道如何填充其他组件。 选中某一行时,我也需要更改标签的值。 在此先感谢基兰

我认为你是一个初学者。 以下是如何实现纳乔已经正确指出的方法:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { // return the number of components required return 2; } 

您可以使用其他NSMutableArray来填充组件。 假设你有两个组件,每个使用不同的NSMutableArrayarray1array2

 // Return row count for each of the components - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == 0) { return [array1 count]; } else { return [array2 count]; } } // Populate the rows of the Picker - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { // Component 0 should load the array1 values, Component 1 will have the array2 values if (component == 0) { return [array1 objectAtIndex:row]; } else if (component == 1) { return [array2 objectAtIndex:row]; } return nil; } 

使用此代码更改label的文本,在PickerView中selectedValue一个值时说selectedValue

 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { selectedValue.text = [NSString stringWithFormat: @"%@, %@", [array1 objectAtIndex:[myPicker selectedRowInComponent:0]],[array2 objectAtIndex:[myPicker selectedRowInComponent:1]]]; } 

…你很好去:)

您可能还想看看http://joshhighland.com/blog/2009/09/17/uipickerview-spinning-multiple-components/关于pickerView编程的宝贵技巧。

您需要设置数据源并使用

 – numberOfComponentsInPickerView: – pickerView:numberOfRowsInComponent: 

设置其委托并使用:

 – pickerView:didSelectRow:inComponent: 

select某个组件中的某一行时更改您的标签。 很可能是UITableViewDelegate和Datasource

并采取一目了然的文件帮助:)

而不是component我发现使用tag更合适。

在这里输入图像说明

然后在代码中:

 // returns the # of rows in each component.. - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ //NSLog(@"Component_1: %d",pickerView.tag); if (pickerView.tag == 1) return [self.arrOpponentTeams count]; else if (pickerView.tag == 2) return [self.arrMyTeams count]; else return [self.arrPlayers count]; } - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ //NSLog(@"Component_2: %d",pickerView.tag); if( pickerView.tag == 1 ) return [self.arrOpponentTeams objectAtIndex:row]; else if (pickerView.tag == 2) return [self.arrMyTeams objectAtIndex:row]; else return [self.arrPlayers objectAtIndex:row]; } 

我不知道是否有点晚了但是我解决了另一种方式数组是有点简单但它有效奇迹你甚至可以把不同的颜色,每个数组

 - (void) viewDidLoad { horPickerArray = @[@"00",@"01",@"02",@"03",@"04",@"05".to..24]; minPickerArray = @[@"00",@"01",@"02",@"03",@"04",@"05".to..59]; secPickerArray = @[@"00",@"01",@"02",@"03",@"04",@"05".to..59]; } - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 3; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == 0) { return _HorPickerArray.count ; } else if (component == 1) { return _MinPickerArray.count ; } else if (component == 2) { return _SecPickerArray.count ; } } - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == 0) { return [_HorPickerArray objectAtIndex:row]; } else if (component == 1) { return [_MinPickerArray objectAtIndex:row]; } else if (component == 2) { return [_SecPickerArray objectAtIndex:row]; } return nil; } 

并在TextField中打印

 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ _OficialTime.text =[NSString stringWithFormat: @"%@:%@:%@", [_HorPickerArray objectAtIndex:[_TimerPiker selectedRowInComponent:0]],[_MinPickerArray objectAtIndex:[_TimerPiker selectedRowInComponent:1]], [_SecPickerArray objectAtIndex:[_TimerPiker selectedRowInComponent:2]]]; }