如何在 UIPickerView 中保存选定的选项

问题描述

我有一个 PickerView,它应该保存选定的 pickerView,但它只选择了认选项。我尝试使用用户认值,但没有用。

我使用的是 Xcode 8。

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView,numberOfRowsInComponent component: Int) -> Int {
        return pizzaToppings.count
        
    }
    func pickerView(_ pickerView: UIPickerView,didSelectRow row: Int,inComponent component: Int) {
        
        pizzaTextField.text = pizzaToppings[row]
        UserDefaults.standard.set(row,forKey: "pickerViewRow")
       
    }
   func pickerView(_ pickerView: UIPickerView,attributedTitleForRow row: Int,forComponent component: Int) -> NSAttributedString? {
    let attrb = NSAttributedString(string: pizzaToppings[row])
        return attrb
        
    }
    func pickerView(_ pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String? {
        return pizzaToppings[row]
    }
    

在重载函数中我使用了用户认值

 override func viewDidLoad() {
    let row = UserDefaults.standard.integer(forKey: "pickerViewRow")
    pickerView.selectRow(row,inComponent: 0,animated: false)

解决方法

让我们看看你在这里做什么。在 viewDidLoad() 中,您找到第一次为 0 的行(保存在 pickerViewRowUserDefaults)。然后选择第一行 - 默认行。如果您点击选择器视图的一行,则将该行设置为 UserDefaults。这里的问题是在 viewDidLoad() 中,您的 UI 选择器视图没有来自您的数据源的元素。您可以将 viewDidLoad 的代码移动到 viewDidAppear 内,它应该可以工作。