【发布时间】:2010-03-20 21:32:46
【问题描述】:
我试图在同一个视图中有 2 个选择器视图。它的工作原理除了两件事。如果一个选择器视图的行数多于另一个,则应用程序在从具有更多项目的选择器视图中选择一个项目时会崩溃。我还为pickerviews 创建了一个NSLog,控制台显示我一次选择了两个项目,而实际上我只处理一个pickerview。我知道这听起来有点令人困惑,但我包含了所有代码。提前谢谢你。
list 和 list2 是 NSMutableArrays
列表有 4 个项目 list2 有 5 个项目
有错误:
* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSCFArray objectAtIndex:]: index (4) beyond bounds (4)”
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView{
if([thePickerView isEqual:pickerView1 ]){
return 1;
}
else if([thePickerView isEqual:pickerView2]){
return 1;
}
else{
return 0;
}
}
-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{
if([thePickerView isEqual:pickerView1 ]){
return [list count];
}
else if([thePickerView isEqual:pickerView2]){
return [list2 count];
}
else{
return 0;
}
}
-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if([thePickerView isEqual:pickerView1 ]){
return [list objectAtIndex:row];
}
else if([thePickerView isEqual:pickerView2]){
return [list2 objectAtIndex:row];
}
else{
return 0;
}
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"Selected item %@. Index of selected item:%i", [list objectAtIndex:row], row);
NSLog(@"Selected item %@. Index of selected item:%i", [list2 objectAtIndex:row], row);
NSLog(@"Selected item %@. Index of selected item:%i", [list3 objectAtIndex:row], row);
if([thePickerView isEqual:pickerView1 ]){
//Do Something
}
else if([thePickerView isEqual:pickerView2 ]){
//Do Something
}
else if([thePickerView isEqual:pickerView3 ]){
//Do Something
}
}
【问题讨论】:
标签: iphone uiview sdk crash uipickerview