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

Swift 当按下按钮时,如何将选择器视图中的数据存储在变量中?,swift,ios8,uipickerview,Swift,Ios8,Uipickerview,我有一个选择器视图,其中有一个组件,我用一个数据数组填充了它。当用户按下按钮时,我希望该行中的选定数据存储在一个变量中,以便我可以使用segue将其发送到另一个视图控制器,并在其中显示在标签中。我唯一遇到麻烦的部分是将数据存储起来,以便在其他地方使用。我知道使用日期选择器,我可以做类似这样的事情来做我想做的事情: @iAction func按钮按下(发件人:AnyObject){ var chosenDate:NSDate=self.datePicker.date } 这将把用户选择的日期存储在

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

@iAction func按钮按下(发件人:AnyObject){
var chosenDate:NSDate=self.datePicker.date
}

这将把用户选择的日期存储在var chosenDate中,当按下按钮时,这就是我想要的pickerView的日期。我还知道,我可以使用pickerView获取数据

func-pickerView(pickerView:UIPickerView,didSelectRow-row-Int,incomonent-component-Int)

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

您可以使用NSUserDefaults创建一个函数来存储此日期。 这样,您可以随时随地访问它(即使在关闭后) 应用程序)

要加载它,请执行以下操作:

要删除/重置其值,请执行以下操作:

省省吧

加载它


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

@IBAction func saveButtonPressed(sender: AnyObject) {

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

}

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

感谢您的回答,使用日期选择器时效果很好,但我正在尝试使用带有自定义数据的选择器视图,例如苹果、桔子、葡萄或1,2,3,4,5。请让我知道,如果你有一个如何解决这个问题的想法。干杯你的代码显示你正在尝试创建一个NSDate对象我想你应该发布另一个问题我实际上正在尝试使用一个选取器视图与我在上面使用日期选取器所做的相同,但你是对的我的问题可能没有那么清楚。这很好,除非你不需要数据是可变的,你应该使用
let
而不是
var
。你说得对,我会马上更改。非常感谢:)
func loadChosenDate()-> NSDate{
    return NSUserDefaults.standardUserDefaults().objectForKey("chosenDate") as NSDate
}
NSUserDefaults.standardUserDefaults().removeObjectForKey("chosenDate")
NSUserDefaults.standardUserDefaults().synchronize()
@IBAction func buttonPressed(sender: AnyObject) {
    saveChosenDate(datePicker.date)
}
let myDate = loadChosenDate()
@IBAction func saveButtonPressed(sender: AnyObject) {

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

}