如何在UIPickerView中滚动到特定行在iOS Swift 3中

时间:2017-08-31 10:02:02

标签: swift3 uipickerview uipicker uipickerviewdatasource uipickerviewdelegate

我有UIPickerView,其值为0 ... 250。 UIPickerView中有2个组件。在第一个组件中,我显示这些值。但我想检测UIPickerView的滚动方法。因为当pickerView出现时我想要显示的值是75.表示pickerView滚动到第75行。用户可以使用值0 ... 250向上和向下滚动选择器。 我在UIPickerView titleForRow row: Int方法

中尝试了此代码
pickerView.selectRow(75, inComponent: 0, animated: true)

在这种情况下,当pickerView出现时,所选值为75.以下就是我想要的

enter image description here

但问题是滚动pickerView我的应用程序崩溃时出现以下错误

[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

任何人都应该帮助我,请提前感谢: - )

2 个答案:

答案 0 :(得分:0)

viewDidLoad方法内,您的选择器为空。如果延迟执行select调用,直到数据加载完成后,您可以执行此操作。可能只有一个周期就足够了。

您可以在viewDidAppearviewWillAppear

中添加

答案 1 :(得分:0)

发生这种情况是因为您在index初始化pickerView之前滚动到cell 75。 UIPickerView仅先初始化可见的单元格,然后在滚动时初始化其余单元格。

viewDidAppear

中执行此操作
override func viewDidAppear(_ animated: Bool) {
    pickerView.selectRow(75, inComponent: 0, animated: true)
}