Я пытаюсь обновить один UIPickerView с помощью другого массива данных NSArray на основе того, какой индекс выбран из UISegmentedControl. В настоящее время, когда я меняю элемент управления, numberOfRowsInComponent не обновляется, а titleForRow будет обновляться только при прокрутке средства выбора.
NSArrays заполняются внутри viewDidLoad, и я использую метод reloadAllComponents после IBAction SegmentedControl.
@synthesize subnetView, classControl;
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
//One column
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
//set number of rows
if (classControl.selectedSegmentIndex == 0){
NSLog(@"Class A Rows %d", [classAArray count]);
return classAArray.count;
}
else if (classControl.selectedSegmentIndex == 1){
return classBArray.count;
}
else if (classControl.selectedSegmentIndex == 2){
return classCArray.count;
}
return 0;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
//set item per row
if (classControl.selectedSegmentIndex == 0){
NSLog(@"Class A Rows %d", [classAArray count]);
return [classAArray objectAtIndex:row];
}
else if (classControl.selectedSegmentIndex == 1){
return [classBArray objectAtIndex:row];
}
else if (classControl.selectedSegmentIndex == 2){
return [classCArray objectAtIndex:row];
}
return 0;
}
-(IBAction)classChange{
[subnetView reloadAllComponents];
}
В зависимости от того, какой селектор выбран для «выбора» в построителе интерфейса, в сборщик загружается правильный массив и количество строк. На основе этого кода при выборе массива с меньшим количеством элементов numberOfRowsInComponents не обновляется, и приложение выйдет из строя при достижении конца меньшего массива.
Итак, у меня две проблемы:
- Обновление элементов происходит только при прокрутке.
- Количество строк не обновляется при выполнении метода reloadAllComponents.
Спасибо за внимание!