我試圖用一個不同的NSArray數據更新一個UIPickerView,這個數據基於哪個索引從UISegmentedControl中選擇。目前,當我更改控件時,numberOfRowsInComponent不會更新,而titleForRow只會在滾動選取器時更新。從UISegmentedControl更新UIPickerView
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方法時,行數不會更新。
感謝收聽!
感謝您的回覆。從進行應用程序,我發現classChange沒有正確執行。我在界面生成器中將TouchUpInside的出口更改爲ValueChanges。一旦這個變化讓所有事情都按預期開始工作。很高興這很簡單! – jcouser 2012-03-04 05:54:32