UIView背景颜色不变?

时间:2018-06-16 21:44:24

标签: ios swift uiview view uibackgroundcolor

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

1 个答案:

答案 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
}