[英]UIPickerView updating from UISegmentedControl
我正在嘗試根據從UISegmentedControl中選擇的索引,使用不同的NSArray數據更新單個UIPickerView。 當前,當我更改控件時,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不會更新,並且在到達較小數組的末尾時應用程序將崩潰。
所以我有兩個問題:
謝謝收聽!
我以前看過 通常,這是由於未連接pickerview插座引起的,實際上沒有調用reloadAllComponents
。 但是,當滾動連接的數據源和委托方法時,它們仍然有效。
可以使用以下方法登錄商店的值來輕松檢查:
NSLog(@"%@",subnetView);
如果它如我所料記錄(NULL)
,則只需連接您的IB插座就可以完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.