如何根据另一个选择器的选择更改选择器行?

时间:2012-01-19 10:58:50

标签: iphone objective-c uipickerview uipicker

我有两个采摘者 - 国家和地区。我需要根据国家选择器中选择的行填充区域选择器。我有阵列来填充两个选择器。我需要一些帮助来根据国家选择器的选择更改区域选择器的行。任何帮助将不胜感激。非常感谢。

4 个答案:

答案 0 :(得分:2)

好的你有两个选择器可以说是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

答案 1 :(得分:1)

它们是单独的选择器视图,还是具有两列的一个选择器视图?

无论哪种方式,当你在一个选择器中更改值时,只需在另一个选择器上调用reloadAllComponents(或reloadComponent:如果你使用的是拆分选择器),然后当它从它的数据源重新加载数据时你可以使用该值从第一个选择器提供正确的区域列表。

答案 2 :(得分:0)

我的建议是请将国家和地区保存在一个选择器中,其中包含两个组件(国家,地区)。如果您喜欢这样,那么我们可以根据另一个组件值更改单个组件值。

答案 3 :(得分:0)

  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上的