应用程序在Scroll UIPickerView上崩溃

时间:2016-06-27 12:58:57

标签: ios objective-c uipickerview

在为UIpickerview滚动另一个组件时,应用程序崩溃了组件更改。

MutableArray一个用于米的高度,另一个用于英尺的英尺。 两个计数都有不同的计数表200计数。 脚阵列数99。

第一个组件有两个测量单位Feet&米,根据选择我显示各自的数组。在计数

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

    if (pickerView == self.heightPickerView  && component == 0)
            return [self.heightTypeArray count];
    else if (pickerView == self.heightPickerView  && component == 1){

        if ([self.heightPickerView selectedRowInComponent:0] == 0)
            return    [self.meterListArray count];

        else if ([self.heightPickerView  selectedRowInComponent:0] == 1)
            return      [self.feetInchListArray count];
    }

    return 0;
}

返回时崩溃[self.feetInchListArray objectAtIndex:row]; 由于数组超出范围。

- (NSString *)pickerView:(UIPickerView *)pickerView
             titleForRow:(NSInteger)row
            forComponent:(NSInteger)component{

    if (component == 0) {
        return [self.heightTypeArray objectAtIndex:row];
    }

    else if (pickerView == self.heightPickerView  && component == 1){

        if ([self.heightPickerView selectedRowInComponent:0] == 0)
           return   [self.meterListArray objectAtIndex:row];

        else if (pickerView == self.heightPickerView && [self.heightPickerView  selectedRowInComponent:0] == 1){

              return   [self.feetInchListArray objectAtIndex:row];
    }

崩溃日志:
  *由于未捕获的异常'NSRangeException'终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引114超出边界[0 .. 98]' ***首先抛出调用堆栈:

任何一个建议如何通过滚动一个选择器组件来解决问题并立即滚动另一个组件应用程序崩溃。

是否有任何方法不允许滚动组件,直到另一个组件完成滚动。

1 个答案:

答案 0 :(得分:0)

NSRangeException意味着您正在尝试访问超出其限制的某个数组的索引。 请再次检查您的阵列和数据源方法

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

  • (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView