我的应用程序完美地在 iOS 5.x 中构建和运行,但是当我在 iOS 6 中调用selectRow:inComponent:animated:
方法时它崩溃了。UIPickerView
代码 :
[_pickerview selectRow:1 inComponent:0 animated:NO];
当我用谷歌搜索它时,我知道这个方法在 iOS6 中不起作用,但我想知道其他方法来做到这一点?
我的应用程序完美地在 iOS 5.x 中构建和运行,但是当我在 iOS 6 中调用selectRow:inComponent:animated:
方法时它崩溃了。UIPickerView
代码 :
[_pickerview selectRow:1 inComponent:0 animated:NO];
当我用谷歌搜索它时,我知道这个方法在 iOS6 中不起作用,但我想知道其他方法来做到这一点?
您的崩溃日志显示您使用了-1
in 代码,其中应该是 {0, 1} 范围内的数字。但是在您粘贴的代码中,您确实使用了1
. 所以你需要检查你的xxx
参数yyy
pickerView.selectRow(xxx, inComponent: yyy, animated: false)
以上答案是正确的,但是如果数组的值与选择器值不同,则会出现此错误。
这是我以这种方式初始化的代码:
amPmArray = [[NSMutableArray alloc] initWithObjects:@"AM",@"PM", nil];
我在选择器中设置值:[picker selectRow:[amPmArray indexOfObject:currentTimeAMPMString] inComponent:5 animated:NO];
我总是在 currentTimeAMPMString 中得到小写值,比如'am,pm',而我的数组不包含这种类型的项目,所以这就是我遇到崩溃错误的原因。
经过 3 天的查找,我发现您是否使用选取器与 textField 关联。Plz 无需为 textField 分配任何文本。使用以下文本的原因意味着分配的测试应该存在于数组中。
[self->pickerView selectRow:[self->dataArray indexOfObject:self->textField.text] inComponent:0 animated:NO];
使用这个。
[self->pickerView selectRow:[self->dataArray objectAtIndex:row] inComponent:0 animated:NO];