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