我想使用相同的viewController在同一视图中创建2个单独的选择器。 但是如何为它们设置单独的委托和数据源?
似乎无法让它发挥作用。它们显示相同的数据。如果您有任何示例代码,我们将不胜感激。
感谢。
答案 0 :(得分:31)
请注意,数据源和委托协议的每个方法都包含UIPickerView *
参数,例如:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
您需要使用它来区分您的两个实例,如下所示:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if([pickerView isEqual: pickerOne]){
// return the appropriate number of components, for instance
return 3;
}
if([pickerView isEqual: pickerTwo]){
// return the appropriate number of components, for instance
return 4;
}
}
答案 1 :(得分:15)
最直接的方法是使用pickerView的tag
属性。我通常在标题中定义这些以便于阅读。您可以在Interface Builder或代码中设置标记。
#define kPickerOne 0
#define kPickerTwo 1
然后在您的实施文件中......
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if(pickerView.tag == kPickerOne)
{
// do something with picker one
}
else if(pickerView.tag == kPickerTwo)
{
// the other picker
}
}