将UIPickerView选择保存到NSUserDefaults swift

时间:2015-06-04 14:59:27

标签: ios swift nsuserdefaults uipickerview

我正在尝试将用户的选择从UIPickerView保存到NSUserDefaults。我在obj-c中找到了答案,但没有迅速找到答案。这是我的UIPickerView代码:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerData.count
    }
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return pickerData[row]
    }

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        race = pickerData[row]
    }

当您按下保存按钮时,它应该将选择的内容保存到NSUserDefaults。这是我的保存代码:

@IBAction func save(sender: AnyObject) {
        var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(race, forKey: "race")
    }

当我尝试在标签上显示文字时,它显示为空白:

override func viewDidLoad() {
        super.viewDidLoad()

        self.raceLabel.text = defaults.objectForKey("race") as? String

如果我的问题需要澄清,请告诉我,谢谢。

1 个答案:

答案 0 :(得分:0)

更新您的代码,如下所示,它将起作用

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent     component: Int) {
    race = row   
}

每次选择一行时,都会调用此函数,参数row的参数表示在UIPickerView中选择的行。

如果将pickerData[row]值分配给race,则要在您的选择器数组中为您在UIPickerView对象中选择的行所代表的索引号分配一个值。