ios - 将 UIPickerView 选择保存到 NSUserDefaults swift

标签 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

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

最佳答案

按照下面的说明更新您的代码,它将起作用

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

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

如果将 pickerData[row] 值分配给 race,则您将在 UIPickerView 对象中所选行表示的索引号处分配 pickerData 数组中的值。

关于ios - 将 UIPickerView 选择保存到 NSUserDefaults swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647379/

相关文章:

iOS:后退按钮标签被自定义字体截断

ios - 如果 Swift 中存在 NSUserDefault 则尝试更新 CLLocation

ios - 尝试在 userDefaults 中存储 Int、[string] 对的数组时出现错误

iphone - 在 NSUserDefaults 中存储填充有自定义对象的 NSMutableArray - 崩溃

swift - 考虑使用 UserDefaults 来创建管理员 ID

ios - 如何使用移动应用程序的模式设计软件

objective-c - 为什么 NSString 'forgetting' 是什么?

ios - 如何设置文本字段的最大值

ios - 在开发者成员(member)中心修改开发者名称

ios - Swift Realm - 查询空集但数据位于 RealmBrowser 中