【问题标题】:Multiple PickerViews in one View?一个视图中有多个 PickerViews?
【发布时间】:2010-10-20 13:14:33
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: iphone objective-c oop


    【解决方案1】:

    请注意,数据源和委托协议的每个方法都包含一个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 函数的结尾”你知道为什么吗?
    • 啊.. 好吧,这是因为它最终可能什么都不返回,所以添加了 else { return 0; } 并且错误消失了......再次感谢你们两个......很好:D
    • 如何将不同的数组值分配给这两个不同的 UIPIckers
    【解决方案2】:

    最直接的方法是使用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
         }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      相关资源
      最近更新 更多