当第二个视图控制器发送数据时,准备Segue工作

时间:2017-08-25 16:57:15

标签: ios swift3 prepareforreuse

我是ios开发的新手 几天前,当我学习如何将数据从一个VC发送到另一个VC然后我使用

override func prepare(for segue: UIStoryboardSegue, sender: self) {
if segue.identifire == "segue1" {
let data = segue.destinetion as! secondViewController
data.labelName = labelFirst.text
}

现在当从secondVC接收数据时,我也使用几乎相同的代码 正如我在网上看到的那样

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "segue2" {
            let secondVC = segue.destination as! secondViewController
            secondVC.delegate = self
        }
    } 

所以任何人都可以快速解释为什么它看起来一样 或者有什么区别

1 个答案:

答案 0 :(得分:0)

要将数据从secondVC发送回firstVC,请使用委托。基于您编写的“secondVC.delegate = self”这一行,您已经阅读了有关此内容的文章,可能只需要一些其他信息。

在secondVC中,将以下代码放在类范围之外。例如上面

class secondVC: UIViewController {}

放在那里的代码是

    protocol secondVCDelegate {
       func didFinishTask(returnData: String)
    }

将以下行放在secondVC的类范围内

var delegate: secondVCDelegate?

然后在firstVC中通过向类添加secondVCDelegate来继承secondVC委托。 (例如:class firstVC: UIViewController, secondVCDelegate {}

然后将该功能添加到您的firstVC

func didFinishTask(returnData: String) {
     //Do something here with returnData
     print(returnData)
}

希望这有帮助!