Ios 显示带有选定行的UIPickerView

Ios 显示带有选定行的UIPickerView,ios,swift,uipickerview,Ios,Swift,Uipickerview,在上次选中选定行后,当我打开UIPickerView时,我试图找出如何显示选定行 当我再次打开PickerView时,我希望我的UIPickerView设置上次选择的选定行 Swift中有什么方法吗?UIPickerView api允许您在代码中的任何组件中选择行: func selectRow(_ row: Int, inComponent component: Int, animated animated: Bool) 因此,如果您为选取器的组件存储了选定的索引,只需在再

在上次选中选定行后,当我打开
UIPickerView
时,我试图找出如何显示选定行

当我再次打开PickerView时,我希望我的
UIPickerView
设置上次选择的选定行


Swift中有什么方法吗?

UIPickerView api允许您在代码中的任何组件中选择行:

func selectRow(_ row: Int,
   inComponent component: Int,
      animated animated: Bool)

因此,如果您为选取器的组件存储了选定的索引,只需在再次显示选取器之前为每个组件调用此方法。

如果这是用于存储某种设置,您可能需要研究使用NSUserDefaults之类的持久存储。更改选择器后,保存NSUserDefaults值。然后,在viewDidLoad方法中,可以将选择器视图设置为先前保存的行

例如,当检测到选择器视图pickerView已更改以将行存储在键pickerViewValue中时,请使用这些行。把这个放在pickerView的didSelectRow中

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(row, forKey: "pickerViewRow")
然后,在加载视图时,使用此选项将选择器设置为保存的行:

let defaults = NSUserDefaults.standardUserDefaults()
if let pickerViewRow = defaults.stringForKey("pickerViewRow")
{
    pickerView.selectRow(pickerViewRow, inComponent: 0, animated: true)
}

您可以在NSUserDefaults中保存最后选定的行,在视图控制器的viewDidLoad中检索值,并将选择器的选定行从值数组中检索到选定值的索引

class Pick: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

var picker = UIPickerView()
var selected: String {
    return NSUserDefaults.standardUserDefaults().stringForKey("selected") ?? ""
}
var data = ["One", "Two", "Three"]

override func viewDidLoad() {
    super.viewDidLoad()
    picker.delegate = self
    picker.dataSource = self
    if let row = data.indexOf(selected) {
        picker.selectRow(row, inComponent: 0, animated: false)
    }
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return data.count
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return data[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    NSUserDefaults.standardUserDefaults().setObject(data[row], forKey: "selected")
}

}

适用于Swift 3

 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if(pickerView.tag==0){
        //set some global variable
    }
} 

非常感谢任何示例代码帮助。感谢您的帮助!在Swift 3:let defaults=UserDefaults.standard defaults.set(row,forKey:“pickerViewRow”)中,您需要将此代码放在设置选择器视图的位置。这是你的问题吗?您是否将选定的索引保存在某个位置?谢谢您的帮助!!我现在明白了。