Ios 如何在同一视图控制器上为不同的PickerView设置不同的数据集
我已经看过很多教程,展示了如何使用多列选择器视图进行此操作,但是对于我正在开发的应用程序,我有两个具有两个完全不同数组的选择器视图来填充来自两个不同数组的数据?所有Ios 如何在同一视图控制器上为不同的PickerView设置不同的数据集,ios,objective-c,uipickerview,Ios,Objective C,Uipickerview,我已经看过很多教程,展示了如何使用多列选择器视图进行此操作,但是对于我正在开发的应用程序,我有两个具有两个完全不同数组的选择器视图来填充来自两个不同数组的数据?所有UIPickerViewDelegate方法都有UIPickerView*参数。在viewDidLoad或类似的地方: UIPickerView *firstPickerView = [[UIPickerView alloc] init]; firstPickerView.dataSource = self; firstPickerV
UIPickerViewDelegate
方法都有UIPickerView*
参数。在viewDidLoad
或类似的地方:
UIPickerView *firstPickerView = [[UIPickerView alloc] init];
firstPickerView.dataSource = self;
firstPickerView.delegate = self;
UIPickerView *secondPickerView = [[UIPickerView alloc] init];
secondPickerView.dataSource = self;
secondPickerView.delegate = self;
NSArray *firstPickerSource = ... // populate with some data
NSArray *secondPickerSource = ... // populate with some data
稍后,在数据源和委托方法中:
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(pickerView == firstPickerView)
return [firstPickerSource count];
else
return [secondPickerSource count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(pickerView == firstPickerView)
return [firstPickerSource objectAtIndex:row];
else
return [secondPickerSource objectAtIndex:row];
}
或者,您可以在创建pickerView时对其进行
tag
标记,并查看pickerView.tag==1
或类似的内容,而不是pickerView==firstPickerView
,这是完全可能的。你做了什么?什么不起作用?我目前设置了两个数组(对于short array和arrayMD),每个数组在.h文件中有一个单独的@property UIPickerview,以及单独的titleForRow和NumberOfComponents。但当我运行应用程序时,两个PickerView都显示相同的数据。我想我需要一种方法来指定picker views数据源,但不完全确定如何指定答案告诉您的内容。委托和数据源方法都引用picker视图。您只需要基于此筛选您的方法。或者为每个选取器视图提供不同的委托和数据源实例。请仅对与IDE本身相关的问题使用xcode
标记。甚至为每个选取器创建单独的委托/数据源。事实证明,这是实现我所需的最简单的方法。非常感谢