通过展开segue传递数据

时间:2015-06-03 14:29:22

标签: ios swift segue

我一直在寻找答案...我不知道如何通过展开segue传递数据。我知道我应该使用prepareForSegue,但我不确定我应该放入什么。我试图在一个类中从UIPickerView传递一个变量(myLabel):

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

到另一个班级。我已经有了unwind segue代码,但是不知道在哪里放置prepareForSegue以及放入什么内容。

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

2 个答案:

答案 0 :(得分:1)

在视图控制器的类中调用

prepareForSegue,您将从(先前已推送或呈现的视图控制器,现在正在弹出或关闭)中展开。 segue的目标视图控制器是将作为结果显示的视图控制器。

答案 1 :(得分:1)

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

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对象放在目标控制器界面中,但您可以使用该文本设置另一个标签,例如。