Как изменить строки сборщика на основе выбора другого сборщика?

У меня два пикера - страна и регион. Мне нужно заполнить средство выбора региона на основе строки, выбранной в средстве выбора страны. У меня есть массивы для заполнения обоих сборщиков. Мне нужна помощь, чтобы изменить строки выбора региона на основе выбора страны. Любая помощь будет принята с благодарностью. Заранее большое спасибо.


person confucizious    schedule 19.01.2012    source источник
comment
Вы искали в Google или SO? есть так много доступных ссылок   -  person Yama Puvar    schedule 19.01.2012


Ответы (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

person Krrish    schedule 19.01.2012
comment
Да, это то, что я в итоге сделал. Спасибо! - person confucizious; 06.03.2012

Являются ли они отдельными представлениями выбора или одним представлением выбора с двумя столбцами?

В любом случае, когда вы меняете значение в одном сборщике, просто вызовите reloadAllComponents на другом сборщике (или reloadComponent: если вы используете разделенный сборщик), а затем, когда он перезагружает данные из своего источника данных, вы можете использовать значение из первого средство выбора для предоставления правильного списка регионов.

person Nick Lockwood    schedule 19.01.2012
comment
Извините за поздний ответ. Да, я составил список стран и регионов и использовал reloadComponent: в средстве выбора региона с помощью NSDictionary, чтобы получить все регионы выбранной страны. Всем спасибо :) - person confucizious; 02.03.2012

Мое предложение: сохраните страну и регион в одном средстве выбора с двумя компонентами (страна, регион). Если вам это нравится, мы можем изменить значения одного компонента на основе значения другого компонента.

person user1157838    schedule 19.01.2012
comment
Я мог бы это сделать, но я должен делать то, что мне говорят делать на работе. :( - person confucizious; 02.03.2012

  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

person Shubhank    schedule 19.01.2012