在选择UIPickerview - iOS上禁用第0行

时间:2012-08-31 02:11:12

标签: ios xcode uipickerview

我正在尝试在UIPickerView上禁用第1行,但它会抛出以下错误

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 2147483647 beyond bounds [0 .. 15]'

任何人都可以告诉我这里出了什么问题?这是代码

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{   
   AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
   if ((row > 0)){
        NSLog(@"%@",[locationArray objectAtIndex:row]);

        if(flag){

        appdelegate.selectedLocation = [locationArray objectAtIndex:row];
        NSLog(@"%@",appdelegate.selectedLocation);

       }  else{

        appdelegate.selectedLocation = [locationArray objectAtIndex:row];
        NSLog(@"%@",appdelegate.selectedLocation);

    }
        [promptLocation addSubview:tapButton];
        [tapButton addTarget:self action:@selector(goToDesireLoc:) forControlEvents:UIControlEventTouchUpInside];
   }else{
    //Don't do anything if row 0 is chosen.
    NSLog(@"do nothing");
   }
}

1 个答案:

答案 0 :(得分:1)

我建议您添加异常断点,以便可以看到代码的哪一行导致崩溃。请参阅此处了解如何操作:stackoverflow.com/q/4961770/472344。

这会导致代码在导致崩溃的行中断。您可以检查“row”的值和“locationArray”的大小。

虽然您的行似乎是2147483647并且您的数组长度为16.所以我猜您的UIPickerView数据源可能存在问题。也许发布你的代码:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

您还可以在该方法中设置断点,以确保正确调用它,并检查它返回的值。