通过 unwind segue 传递数据

Pass data through unwind segue

我一直在寻找这个问题的答案...我不知道如何通过 unwind segue 传递数据。我知道我应该使用 prepareForSegue 但我不确定我应该输入什么。我试图从一个 class:[=12= 中的 UIPickerView 传递一个变量 (myLabel) ]

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    myLabel.text = pickerData[row]
}

另一个class。我已经有了 unwind segue 代码,但不知道将 prepareForSegue 放在哪里以及放什么。

如果我的问题需要进一步说明,请告诉我。

prepareForSegue 在您将要展开的视图控制器的 class 中调用 from(之前推送或呈现的视图控制器,现在正在弹出或解雇)。 segue 的目标视图控制器是将作为结果出现的视图控制器。

如果我正确理解你的问题,你应该这样做:

class MyPickerController : UIViewController {
  @IBOutlet weak var myLabel: UILabel!

  var pickerData:[String]

  func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    myLabel.text = pickerData[row]
    performSegueWithIdentifier( "mySegueName", sender: self )
  }

  func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let myController = segue.destinationController as? MyDestinationViewController {
      myController.text = myLabel.text
  }
}

这会将标签文本传递给 MyDestinationViewController 实例。 请注意,我没有传递 UILabel 对象,而是文本。 您不能将该 UILabel 对象放置在目标控制器界面中,但您可以使用文本设置另一个标签,例如。