我想在同一视图中使用相同的viewController创建2个单独的选择器。 但是如何为它们设置不同的代理和数据源呢?
似乎无法使其正常工作。它们显示相同的数据。如果您有任何关于此的示例代码,将不胜感激。
谢谢。
我想在同一视图中使用相同的viewController创建2个单独的选择器。 但是如何为它们设置不同的代理和数据源呢?
似乎无法使其正常工作。它们显示相同的数据。如果您有任何关于此的示例代码,将不胜感激。
谢谢。
请注意,数据源和代理协议的每个方法都包含一个 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;
}
}
最直接的方法是使用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
}
}