按下按钮时如何将选择器视图中的数据存储在变量中?

How to store data from a picker view in a variable when a button is pressed?

我有一个选择器视图,其中一个组件填充了一组数据。当用户按下一个按钮时,我希望将该行中的选定数据存储在一个变量中,以便我可以使用 segue 将其发送到另一个视图控制器,并将其显示在标签中。我遇到的唯一问题是实际上要存储该数据以便在其他地方使用。我知道使用 datePicker,我可以做这样的事情来做我想做的事:

@IBAction func buttonPressed(sender: AnyObject) { var chosenDate: NSDate = self.datePicker.date }

这会将用户选择的日期存储在 var chosenDate 中,这是按下按钮时我想要的 pickerView。我也知道我可以使用

在 pickerView 中获取该数据

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

唯一的问题是每次用户更改值时它都会选择数据,并且它不允许我将数据存储在函数外部的变量中以便我在我的@中使用它IBAction func buttonPressed 方法。提前致谢!

You can create a function to store this date using NSUserDefaults. This way you can access it everywhere and anytime (even after closing the app).

func saveChosenDate(date:NSDate){
    NSUserDefaults.standardUserDefaults().setObject(date, forKey: "chosenDate")
    NSUserDefaults.standardUserDefaults().synchronize()
}

to load it:

func loadChosenDate()-> NSDate{
    return NSUserDefaults.standardUserDefaults().objectForKey("chosenDate") as NSDate
}

to delete/reset the value of it:

NSUserDefaults.standardUserDefaults().removeObjectForKey("chosenDate")
NSUserDefaults.standardUserDefaults().synchronize()

save it

@IBAction func buttonPressed(sender: AnyObject) {
    saveChosenDate(datePicker.date)
}

load it

let myDate = loadChosenDate()

好吧,在尝试了不同的方法后,我终于找到了解决问题的方法。这可能不是更有经验的开发人员所做的,但它对我来说就像我想要的那样。这是我所做的:

@IBAction func saveButtonPressed(sender: AnyObject) {

    var chosen = pickerView.selectedRowInComponent(0)
    var chosenString = arrayPopulatingThePickerView[chosen]

}

我需要的 pickerView 中只有一个组件,因此当按下按钮时,我将组件 0 的行号存储在一个变量中,然后我将字符串存储在另一个变量中,使其等于数组 I用于填充我的选择器视图。我通过将所选变量传递给行来检索行。