在弹出之前访问ViewController的变量

时间:2015-07-22 16:57:23

标签: ios swift uiviewcontroller uinavigationcontroller viewcontroller

我有一个主页按钮,按下后会触发此代码。 我需要在viewController中更改一个变量,我弹出之前我弹出它。有没有办法做到这一点?

func goHome(){

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

    }

我认为你会这样做但是自动完成窗口中没有viewController的变量。

switchViewController.x = 5

任何有关如何解决这个问题的信息和/或为什么它不能正常工作将不胜感激。

2 个答案:

答案 0 :(得分:0)

QSplitter的{​​{1}}是哪种类型? 为了在UIViewController中拥有自定义变量,您需要对其进行子类化,并在获取它时,您可以这样做:

switchViewController

UIViewController作为示例变量,func goHome(){ let switchViewController = self.navigationController?.viewControllers[1] as! YourViewController self.navigationController?.popToViewController(switchViewController, animated: true) } 没有此类型的变量,但您的子类(我希望您有一个)x可能有,然后自动 - 完成将开始。

答案 1 :(得分:0)

您将switchViewController设置为通用UIViewController,其中没有变量.x

你应该把它设置为正确的类,在这种情况下,你可以命名具有'x'变量的类:

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

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

import UIKit

class SwitchViewController: UIViewController {

    var x: Int!

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

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