根据之前的选择器选择更新第二个UIPickerView

时间:2015-01-29 19:34:22

标签: ios objective-c arrays cocoa-touch uipickerview

目前,我在数组中有一个名称值列表。

我使用数组使用名称填充第一个选择器,但我想根据我在第一个选择器中选择的内容将特定值加载到第二个选择器中。

我使用MySQL数据库加载值并获取第二个数组的数据,我使用以下代码:

- (void) getCustomData {
NSString *concat = [NSString stringWithFormat:@"%@%@",getYear, self.textField.text];
NSURL *url = [NSURL URLWithString:concat];
NSData *data = [NSData dataWithContentsOfURL:url];

jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

yearArray = [[NSMutableArray alloc] init];


for (int i = 0; i < jsonArray.count; i++){

    NSString *pYear = [[jsonArray objectAtIndex:i] objectForKey:@"year"];

    [yearArray addObject:pYear];

}

}

getYear只是@&#34; http://www.website.com/getData.php?year=&#34;

因此,这成功地创建了一个名为yearArray的数组,并使用正确的值填充它。

但这是我的问题......

我现在需要用这些数据填充第二个选择器视图数组,然后重新加载第二个选择器视图,以便在第一个文本字段更新时显示它(通过第一个选择器视图进行选择)。

1 个答案:

答案 0 :(得分:0)

首先,您的控制器应该实现UIPickerViewDataSource和UIPickerViewDelegate协议,第一种是为选择器提供数据的方式。当你有了这个时,你所要做的就是调用第二个选择器的updateAllComponents方法让它刷新它的内容。 因此,在第一个选择器中检测选择的委托方法:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
  if (pickerView == self.yearPicker) {
    // update your data array for the second picker first
    // then call the following 
    [self.monthPicker updateAllComponents];
  }
}