一个视图中有多个PickerView?

时间:2009-04-20 11:16:59

标签: iphone objective-c oop

我想使用相同的viewController在同一视图中创建2个单独的选择器。 但是如何为它们设置单独的委托和数据源?

似乎无法让它发挥作用。它们显示相同的数据。如果您有任何示例代码,我们将不胜感激。

感谢。

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
     }
}