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

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

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

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

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

【问题讨论】:

    标签: ios swift segue


    【解决方案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 的目标视图控制器是作为结果出现的视图控制器。

    【讨论】:

      猜你喜欢
      • 2016-05-20
      • 2015-05-24
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2019-05-11
      • 2015-01-13
      • 1970-01-01
      相关资源
      最近更新 更多