【问题标题】:Finishing this snippet of code to pass data via a segue from one controller to another完成这段代码以通过 segue 从一个控制器向另一个控制器传递数据
【发布时间】:2017-02-25 10:37:01
【问题描述】:

我有一个 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”视图控制器?

谢谢

【问题讨论】:

  • 为什么不直接做createCommunityController.myEmail = userEmailText.text

标签: ios swift xcode swift3 xcode8


【解决方案1】:

为什么不直接

createCommunityController.myEmail = userEmailText.text

我认为你的问题是你对如何将数据从一个 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

它应该可以工作。

【讨论】:

  • 您能否将其编辑为“但不,这不正确”的评论让我感到困惑。你能告诉我什么是正确的吗?谢谢。
  • @RichardDowns 基本上,将 prepareForSegue 方法放在启动 segue 的 VC 中,即ViewController
  • 谢谢你 Sweeper - 已经解决了。 :)
  • @RichardDowns 如果您认为我的回答回答了您的问题,请考虑通过单击该复选标记接受它。
【解决方案2】:

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)
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多