一个视图中如何使用多个选择器?

21

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

似乎无法使其正常工作。它们显示相同的数据。如果您有任何关于此的示例代码,将不胜感激。

谢谢。

2个回答

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

这个很好用,谢谢。唯一的问题是我收到一个警告,说“警告 - 控制到达非void函数的末尾”,你知道为什么吗? - CC.
1
啊..好的,这是因为它可能会返回空值,所以我添加了else { return 0; },错误就消失了...再次感谢你们两个..非常棒的帮助 :D - CC.
我如何将不同的数组值分配给这两个不同的UIPicker? - Mahesh Babu

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接