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

时间:2015-01-04 20:31:44

标签: swift ios8 uipickerview

我有一个选择器视图,其中包含一个用数组数组填充的组件。当用户按下按钮时,我希望该行中的所选数据存储在变量中,以便我可以使用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方法。提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

@IBAction func saveButtonPressed(sender: AnyObject) {

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

}

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

答案 1 :(得分:1)

  

您可以使用NSUserDefaults创建一个存储此日期的函数。   这样你就可以随时随地访问它(甚至在关闭之后)   应用程序)。

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

加载它:

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()