在弹出之前访问 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()
}
}
我有一个主页按钮,按下时会触发此代码。 我需要在 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()
}
}