我正在尝试使用不同的 NSArray 数据更新单个 UIPickerView,该数据基于从 UISegmentedControl 中选择的索引。目前,当我更改控件时,numberOfRowsInComponent 不会更新,并且 titleForRow 只会在滚动选择器时更新。
NSArrays 填充在 viewDidLoad 中,我在 SegmentedControl 的 IBAction 上使用了 reloadAllComponents 方法。
@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 方法时,行数不会更新。
感谢收听!