将 UIPickerView 选择保存到 NSUserDefaults swift

Posted

技术标签:

【中文标题】将 UIPickerView 选择保存到 NSUserDefaults swift【英文标题】:Save UIPickerView selection to NSUserDefaults swift 【发布时间】:2015-06-04 14:59:26 【问题描述】:

我正在尝试将用户的选择从 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

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

【问题讨论】:

哪里叫保存:? 它与pickerview @Larme在同一个viewcontroller类中 你在哪里检索值?您尝试在哪里显示标签上的文本? 好的,我编辑了它以显示我试图在哪里显示它@Larme 保存时race的值是多少? 【参考方案1】:

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

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

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

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

【讨论】:

以上是关于将 UIPickerView 选择保存到 NSUserDefaults swift的主要内容,如果未能解决你的问题,请参考以下文章

根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用

如何保存 UIPickerView 行选择

在核心数据中保存 uipickerview 颜色

UIPickerView 选择将 nil 值发送到新的 ViewController

显示带有选定行的 UIPickerView

根据匹配来自 coredata 的字符串选择 UIPickerview