Массив UIPickerView не перезагружается после didSelectRow - PullRequest
1 голос
/ 09 января 2011

Позвольте мне попытаться объяснить, что я имею в виду и что я пытаюсь достичь. У меня есть viewcontroller с двумя UIPickerView's в нем. Каждый UIPickerView подключен через IFB. Все отлично работает, но я пытаюсь перезагрузить данные на одном сборщике в зависимости от выбора другого сборщика.

.m файл

- (void)viewDidLoad
{
[super viewDidLoad];
pickerViewArray = [[NSMutableArray alloc] init];
[pickerViewArray addObject:@"Name 1"];
[pickerViewArray addObject:@"Name 2"];
[pickerViewArray addObject:@"Name 3"];
[pickerViewArray addObject:@"Name 4"];
[pickerViewArray addObject:@"Name 5"];

pickerViewArray2 = [[NSMutableArray alloc] init];
[pickerViewArray2 addObject:@"Phone 1"];
[pickerViewArray2 addObject:@"Phone 2"];
[pickerViewArray2 addObject:@"Phone 3"];
[pickerViewArray2 addObject:@"Phone 4"];
[pickerViewArray2 addObject:@"Phone 5"];
}
}

- (void)pickerView:(UIPickerView *)aPickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
  if([[pickerViewArray2 objectAtIndex:row] isEqual:@"Phone 2"]){
    [picker2 reload];
  }
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)aPickerView {

    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)aPickerView numberOfRowsInComponent:(NSInteger)component {

    return [pickerViewArray count];

}

- (NSString *)pickerView:(UIPickerView *)aPickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

    return [pickerViewArray objectAtIndex:row];
}

Редактировать: чтобы устранить проблему, я просто добавил массив к каждому aPickerView, т.е. titleForRow и т. Д.

1 Ответ

1 голос
/ 09 января 2011

Метод reload делает именно это - перезагружает существующие данные. Вам необходимо переместить логику, имеющуюся в viewDidLoad, в titleForRow и numberOfRowsInComponent, чтобы после того, как первый инструмент выбора был задействован, правильные данные могут быть возвращены. На данный момент вы загружаете что-то другое в pickerViewArray2 только в viewDidLoad, и это не будет перезапущено вашим методом перезагрузки.

...