完成这段代码,通过segue从一个控制器传递数据到另一个控制器

时间:2016-10-16 11:03:25

标签: ios swift xcode swift3 xcode8

我有一个ViewController,“ViewController”。

在此视图中,有一个属性'userEmailText.text',我想将其传递给另一个视图控制器,“CreateNewCommunity”

我有一个连接到具有标识符'createCommunitySegue'的segue的按钮。我已经创建了点击它的代码:

@IBAction func createCommunityTapped(_ sender: AnyObject) {
    self.performSegue(withIdentifier: "createCommunitySegue", sender: self)   
}

在我的第二个视图控制器中,“CreateNewCommunity”我有一个变量:

var myEmail: String?

我已经开始构建准备从segue接收数据的代码了:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "createCommunitySegue" {
            let createCommunityController: CreateNewCommunity = segue.destination as! CreateNewCommunity
            createCommunityController.myEmail =
        }

    }

如何完成此设置,以便“ViewController”通过segue'createCommunitySegue'将“userEmailText.text”初始值传递给“CreateNewCommunity”视图控制器?

由于

2 个答案:

答案 0 :(得分:1)

为什么不

createCommunityController.myEmail = userEmailText.text

我认为您的问题是您对如何将数据从一个vc传递到另一个vc有错误的想法。

将数据传递给的VC不会接收数据。 VC是主动将数据传递给需要它的VC的。

我的猜测是你把这段代码

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "createCommunitySegue" {
        let createCommunityController: CreateNewCommunity = segue.destination as! CreateNewCommunity
        createCommunityController.myEmail =
    }

}
CreateNewCommunity控制器中的

!您应该将上述内容放在ViewController而不是CreateNewCommunity中,并写入

createCommunityController.myEmail = userEmailText.text

它应该有用。

答案 1 :(得分:0)

VC1

@IBAction func createCommunityTapped(_ sender: AnyObject) {
self.performSegue(withIdentifier: "createCommunitySegue", sender: self)   
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "createCommunitySegue" {
        let createCommunityController: CreateNewCommunity = segue.destination as! CreateNewCommunity
        createCommunityController.myEmail = userEmailText.text
    }

}

VC2

var myEmail: String?
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)


 print(myEmail)
 }