Multiple PickerViews in one View?

前端 未结 2 1325
温柔的废话
温柔的废话 2020-12-30 00:50

I want to create 2 separate pickers in the same view using the same viewController. But how do I set separate delegates and datasource for them?

Can\'t seem to get i

相关标签:
2条回答
  • 2020-12-30 01:18

    The most straight forward way to do this is to use the tag property of the pickerView. I usually define these in the header for readability. You can set the tag in Interface Builder or in code.

    #define kPickerOne 0
    #define kPickerTwo 1
    

    Then in your implementation file...

    -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
    {
         if(pickerView.tag == kPickerOne)
         {
              // do something with picker one
         }
         else if(pickerView.tag == kPickerTwo)
         {
              // the other picker
         }
    }
    
    0 讨论(0)
  • 2020-12-30 01:22

    Note that each method of both the datasource and the delegate protocols contain a UIPickerView * parameter, for instance:

    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    

    You need to use it to distinguish between your two instances, as follows:

    - (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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题