У меня два пикера - страна и регион. Мне нужно заполнить средство выбора региона на основе строки, выбранной в средстве выбора страны. У меня есть массивы для заполнения обоих сборщиков. Мне нужна помощь, чтобы изменить строки выбора региона на основе выбора страны. Любая помощь будет принята с благодарностью. Заранее большое спасибо.
Как изменить строки сборщика на основе выбора другого сборщика?
Ответы (4)
Хорошо, у вас есть два сборщика, скажем, countryPicker и regionPicker.
в методе делегата для UIPickerView добавить одно условие
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *pickerTitle = @"";
if (pickerView == countryPicker)
{
pickerTitle = [countryFeeds objectAtindex:row];
//assigns the country title if pickerView is countryPicker
}
else if (pickerView == regionPicker)
{
pickerTitle = [regionFeeds objectAtindex:row];
//assigns the region title if pickerView is regionPicker
}
return pickerTitle;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (pickerView == countryPicker)
{
//selects the region corresponding to the selected country.
//totalRegions is a NSDictionary having country names as keys and array of their regions as values
regionFeeds = [totalRegions objectForKey:[countryFeeds objectAtindex:row]];
//Now reloading the regionPicker with new values.
[regionPicker reloadAllComponents];
}
else if (pickerView == regionPicker)
{
// your code to select a region
}
}
Надеюсь, это решит вашу проблему :)
BR, Hari
Являются ли они отдельными представлениями выбора или одним представлением выбора с двумя столбцами?
В любом случае, когда вы меняете значение в одном сборщике, просто вызовите reloadAllComponents на другом сборщике (или reloadComponent: если вы используете разделенный сборщик), а затем, когда он перезагружает данные из своего источника данных, вы можете использовать значение из первого средство выбора для предоставления правильного списка регионов.
Мое предложение: сохраните страну и регион в одном средстве выбора с двумя компонентами (страна, регион). Если вам это нравится, мы можем изменить значения одного компонента на основе значения другого компонента.
NSUInteger selectedRow= [CountryPicker selectedRowInComponent:0];
NSString *userchoice =[self pickerView:CountryPicker titleForRow:selectedRow forComponent:0];
Это даст вам заголовок для выбранной строки пользователем в средстве выбора страны.
затем, используя массивы, вы должны заполнить имена регионов. Вы можете использовать
- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated
на RegionPicker