通过 unwind segue 传递数据

Posted

技术标签:

【中文标题】通过 unwind segue 传递数据【英文标题】:Pass data through unwind segue 【发布时间】:2015-06-03 14:29:22 【问题描述】:

我一直在寻找这个问题的答案...我不知道如何。我知道我应该使用prepareForSegue,但我不确定我应该输入什么。我试图从一个类中的 UIPickerView 传递一个变量(myLabel):

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

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

如果我的问题需要更多说明,请告诉我。

【问题讨论】:

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

【讨论】:

我必须向 MyDestinationViewController 添加一个 NSString 变量,但除此之外您的解决方案有效,谢谢! 不客气。建议使用 String 而不是 NSString。【参考方案2】:

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

【讨论】:

以上是关于通过 unwind segue 传递数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Unwind segue 触发时,Push segue 不起作用

使用 unwind segues 通过 UITableViewcell 推送数据

通过 navigationController 使用 segue 传递数据

通过 segue 在视图控制器之间传递数据

通过 Segue 传递数据(swift 2)

通过 Segue 传递数据和一些错误