I have a dilemma, I have two UIPickerViews which "show" when two distinct views load. I started with one UIPickerView
and was able to get that up and running by loading the array and all the other UIPickerView
actions within the ViewController.
I thought it would be as simple as copy/pasting the same methods for the new UIPickerView
, but just changing the variable names, also within the same UIViewController
.
Problem is - both UIPickerView
are showing the same data set in the drop down ? Am I simply missing something obvious here?
Updated below
I did that for all four methods below and now that app crashes once the “next” view is loaded? Does this look right?
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
- (NSInteger)thePickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
- (NSString *)thePickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
- (void)thePickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
Yeah you are, you have to use the UIPickerView argument to determine WHICH picker view is actually asking for data - since you have set both pickers to the same data source.
-(void)numberOfComponentInPickerView:(UIPickerView*)thePickerView {
if(thePickerView == firstPickerView) {
// return number of components in first picker
} else if(thePickerView == secondPickerView) {
// return number of components in second picker
} else {
assert(NO);
}
}
// repeat for all other delegate / datasource methods
来源:https://stackoverflow.com/questions/5545898/multiple-uipickerviews