【问题标题】:Pass data from ViewController back to root ViewController?将数据从 ViewController 传递回根 ViewController?
【发布时间】:2015-08-20 21:56:49
【问题描述】:

我想知道如何在 VC3 和 VC1 之间传递数据。

我拥有的是根视图(VC1)。然后你输入一个 tableView,如果你选择一个项目,你将输入 tableView2(VC3) - 类别 - 子类别选择器。

到目前为止我所做的是在 VC1 中声明这一点:

@IBAction func unwindToVC1(segue: UIStoryboardSegue) {

 }

然后在故事板中我控制拖拽黄色按钮到VC3中的红色按钮并选择“unwindToVC1”作为动作,然后我命名为segue。

然后我在 VC3 中通过 performSegueWithIdentifier() 触发 segue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "Vc1" {
            let toView = segue.destinationViewController as! myRootVc

            let test = "test string"

            toView.test = test

        }
    }

它几乎可以工作,我最终进入了 VC1,但传递的值在 VC1 中显示为 nil,即使我之前已经在 vc1 中声明了它:

var 测试:字符串?

【问题讨论】:

  • 能否在 if {} 之间添加一个断点。也许你设置的标识符错误。我没有看到其他解释。你的代码看起来不错。
  • if segue.identifier == "Vc1"。我们在哪里“Vc1”?
  • @Yuchen 我试过了,它被调用了,所以不知道怎么回事

标签: ios objective-c swift cocoa-touch uistoryboardsegue


【解决方案1】:

您正在使用 segue 在 VC 之间传递数据!和 VC3 以及当您从子类别中选择项目时。你可以使用代表

【讨论】:

  • 但是委托在根-子-子 VC 之间工作吗?我的意思是退后两步
  • @user2722667 我会推荐 NSNOtificationCenter 并发布通知
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 2017-11-08
  • 2021-05-04
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多