- (void)viewDidLoad{
subtypepickerarray =[[NSMutableArray alloc]init];
[subtypepickerarray addObject:@"hello"];
[subtypepickerarray addObject:@"object 2"];
[subtypepickerarray addObject:@"jfhgsjdfhg"];
[subtypepicker reloadAllComponents];
lymphnodearray = [[NSMutableArray alloc]init];
for (int j = 0; j<=10;j++){
NSString *answer1 = [NSString stringWithFormat:@"%d",j];
[lymphnodearray addObject:answer1];
[Pos_lymppicker reloadAllComponents];
}
}
当我收到错误消息时会突出显示这些代码
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
................
else if (thePickerView == subtypepicker){
return [subtypepickerarray objectAtIndex:row];
}
else {
return[lymphnodearray objectAtIndex:row];
}
}
检查输出后我发现了这个
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 3 beyond bounds [0 .. 2]'
*** Call stack at first throw:
这是否意味着我的数组是空的?我有点困惑!任何帮助,将不胜感激 !谢谢
答案 0 :(得分:1)
问题是UIPickerView的数据源(在您的案例数组中)有更多要显示的项目,然后是UIPicker。 您需要使用此方法才能使其正常工作
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { NSUInteger numRows; numRows = (NSUInteger)[yourArray count]; }
答案 1 :(得分:0)
数组包含的对象少于您尝试访问的对象。
它只有3个对象,你试图访问4个对象。
因此,请检查阵列的数量并相应填写拣货员。
同时检查您的所有4个数组是否已正确填充数据。
希望这有帮助。