UIView 背景颜色没有改变?
UIView Background Color Not Changing?
当我运行我的应用程序时,背景颜色没有调整。 Colornumber 是一个全局变量。在AppDelegate.swift时,它被初始化为0值。当应用程序在运行时,第一次调用ViewWillAppear时值为0。在ViewController时被调用。出现。接下来,在 colorNumber 变量已更改为 2 之后,viewWillAppear 再次 运行(因为它在 DidFinishLaunchingWithOptions 中被调用)。程序进入第二个条件(因为它正确打印出 "We're in the second condition")。但是,背景颜色保持绿色。为什么背景颜色没有变成蓝色?谢谢
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()
你真正的问题是你在这条语句中创建了 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
}
当我运行我的应用程序时,背景颜色没有调整。 Colornumber 是一个全局变量。在AppDelegate.swift时,它被初始化为0值。当应用程序在运行时,第一次调用ViewWillAppear时值为0。在ViewController时被调用。出现。接下来,在 colorNumber 变量已更改为 2 之后,viewWillAppear 再次 运行(因为它在 DidFinishLaunchingWithOptions 中被调用)。程序进入第二个条件(因为它正确打印出 "We're in the second condition")。但是,背景颜色保持绿色。为什么背景颜色没有变成蓝色?谢谢
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()
你真正的问题是你在这条语句中创建了 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
}