gpt4 book ai didi

ios - UIView 背景颜色没有改变?

转载 作者:行者123 更新时间:2023-11-28 10:40:12 25 4
gpt4 key购买 nike

当我运行我的应用程序时,背景颜色没有调整。 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()

你真正的问题是你在这条语句中创建了 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
}

关于ios - UIView 背景颜色没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com