[英]UIView Background Color Not Changing?
當我運行我的應用程序時,背景色不會調整。 Colornumber是一個全局變量。 在AppDelegate.swift中,它初始化為具有0的值。運行應用程序時,第一次調用ViewWillAppear,其值為0。在出現ViewController時調用它。 接下來,將colorNumber變量更改為2后,再次運行viewWillAppear(因為在DidFinishLaunchingWithOptions中被調用)。程序進入第二個條件(因為它正確打印出“我們處於第二個條件”)。 但是,背景色仍為綠色。 背景顏色為什么不變為藍色? 謝謝。
ViewController.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()
}
}
AppDelegate.swift:
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
colorNumber = 0
colorNumber = 1
ViewController().viewWillAppear(false)
}
您永遠不要自己調用lifeCycle方法。 因此,您可以調用設置屬性的方法或調用setInitalColor()
而不是調用viewWillAppear()
setInitalColor()
。
真正的問題是您要在此語句中創建ViewController
的第二個實例:
ViewController().viewWillAppear(false)
那與屏幕上的ViewController
。 相反,您可以向window
詢問其rootViewController
,然后在該window
調用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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.