在弹出之前访问 ViewController 的变量

Access Variables of ViewController Before Popping To It

我有一个主页按钮,按下时会触发此代码。 我需要在 viewController 我弹出到 之前更改一个变量,然后 我弹出它。有什么办法吗?

func goHome(){

        let switchViewController = self.navigationController?.viewControllers[1] as! UIViewController
        self.navigationController?.popToViewController(switchViewController, animated: true)

    }

这就是我认为您会采用的方式,但是 viewController 的变量没有出现在自动完成 window 中。

switchViewController.x = 5

如能提供有关如何解决此问题的任何信息 and/or 为什么它无法正常工作,我们将不胜感激。

你的switchViewController是什么类型的UIViewController? 为了在 UIViewController 中包含自定义变量,您需要对其进行子类化,当取回它时,您可以这样做:

func goHome(){

    let switchViewController = self.navigationController?.viewControllers[1] as! YourViewController
    self.navigationController?.popToViewController(switchViewController, animated: true)

}

x为例,UIViewController没有这个类型的变量,但是你的UIViewController的子类(我希望你有一个)可能有,然后自动完成将启动。

您正在将 switchViewController 设置为通用 UIViewController,它没有变量 .x

您应该将其设置为正确的 class,在本例中,您可以将其命名为具有 'x' 变量的 class:

let switchViewController = self.navigationController?.viewControllers[1] as! SwitchViewController
switchViewController.x = 5

在这种情况下,我使用了 class 名称 SwitchViewController,这意味着您需要一个 .Swift class 文件,如下所示:

import UIKit

class SwitchViewController: UIViewController {

    var x: Int!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}