滚动 UIPickerView 上的应用程序崩溃
Posted
技术标签:
【中文标题】滚动 UIPickerView 上的应用程序崩溃【英文标题】:App Crashes on Scroll UIPickerView 【发布时间】:2016-06-27 12:58:56 【问题描述】:为 UIpickerview 滚动另一个组件时,组件更改时应用程序崩溃。
MutableArray 一个以米为单位的高度,另一个以英尺英尺英寸为单位。 两个计数确实有不同的计数计 200 计数。 英尺阵列数 99。
第一个组件确实有两个测量单位英尺和米,基于我显示各自阵列的选择。计数中
- (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]” *** 首先抛出调用栈:
任何人都可以建议如何解决滚动一个选择器组件并立即滚动另一个组件应用程序崩溃的问题。
是否有任何方法在另一个组件完成滚动之前不允许滚动组件。
【问题讨论】:
您的数组的索引以 98 结束,您正在尝试到达索引 114.. 【参考方案1】:NSRangeException 这意味着您正在尝试访问超出其限制的某个数组的索引。 请再次检查您的数组和数据源方法
(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
【讨论】:
以上是关于滚动 UIPickerView 上的应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
当我在明确选择一行之前选择 UIPickerView 上的“完成”按钮时,应用程序崩溃
UIActionSheet 中的 UIPickerView:UI 冻结
iOS 应用程序在尝试使用 UIPickerView 加载视图时崩溃 NSUnknownKeyException