What I am trying to accomplish: I have 5 different UITextfields. I want the user to be able to fill in these fields using UIPickerviews. Also i want each of the pickerviews to have a different ranges and/or types of values to choose from for each text field.
I've tried doing this using multiple pickerviews with different arrays for each textfield using switch statements. However I don't feel that this is the most efficient way to go about implementing this. Could someone shed some light on the best practises in implementing different data arrays for pickerviews?
You can achieve what you are doing with help of just one PickerView with the following code
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch (pickerSelected) {
case LANGUAGE:
return [languageArray count];
break;
case GENDER:
return [genderArray count];
break;
case COUNTRY:
return [countryArray count];
break;
case CITY:
return [cityArray count];
break;
default:
return 0;
break;
}
return 0;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch (pickerSelected) {
case LANGUAGE:
return [languageArray objectAtIndex:row];
break;
case GENDER:
return [genderArray objectAtIndex:row];
break;
case COUNTRY:
return [[countryArray objectAtIndex:row] countryName];
break;
case CITY:
return [cityArray objectAtIndex:row];
default:
return @"";
break;
}
return nil;
}
Where languageArray
, genderArray
, countryArray
represent your
different arrays
and pickerSelected
can be an enum
or an int
value which you can set according to different UITextField's.
Each UITextField will have unique value for PickerView