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

Update second UIPickerView based off previous picker selection

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

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

我正在使用 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 只是@"http://www.website.com/getData.php?year="

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

但这是我的问题...

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

首先,您的控制器应该实现 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];
  }
}