当我运行我的应用程序时,背景颜色不会调整。 Colornumber是一个全球变量。在AppDelegate.swift中,它被初始化为值0.当应用程序运行时,ViewWillAppear第一次被调用,值为0.它在ViewController出现时被调用。接下来,在将colorNumber变量更改为2之后再次运行viewWillAppear(因为它在DidFinishLaunchingWithOptions中调用)。程序进入第二个条件(因为它正确地打印出“我们处于第二个条件”)。但是,背景颜色保持绿色。为什么背景颜色不会变成蓝色?感谢。
ViewController.swift:
Tabs
AppDelegate.swift:
var colorNumber: Int!
class ViewController: UIViewController {
func setInitialColor() {
if colorNumber! == 1 {
self.view.backgroundColor = .green
print("We're in the First Condition")
}
else if colorNumber! == 2 {
self.view.backgroundColor = .blue
print("We're in the second condition")
}
}
override func viewWillAppear(_ animated: Bool) {
self.setInitialColor()
}
}
答案 0 :(得分:3)
你永远不应该自己调用lifeCycle方法。因此,您可以调用设置属性或调用viewWillAppear()
的方法,而不是调用setInitalColor()
。
您真正的问题是您在此声明中创建了ViewController
的第二个实例:
ViewController().viewWillAppear(false)
这与屏幕上的ViewController
不同。相反,您可以向window
询问rootViewController
,然后点击setInitialColor()
:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
colorNumber = 2
let vc = window?.rootViewController as? ViewController
vc?.setInitialColor() // color is now blue!
return true
}