繁体   English   中英

Swift:从AppDelegate设置ViewController背景颜色

[英]Swift: Setting ViewController background color from AppDelegate

我想更改ViewController的背景颜色。 在视图控制器中,我可以编写self.view.backgroundColor = UIColor (red: 0, green: 0.0, blue: 0.5, alpha: 1.0) 但是,我需要从AppDelegate进行更改。 根据此答案 ,在AppDelegate中访问ViewController的属性的方式如下:

1)设置一个全局变量: var myViewController: ViewController!

2)

var theViewController = ViewController()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.myViewController = theViewController

以便

self.myViewController.view.backgroundColor = UIColor (red: 0, green: 1.0, blue: 0.5, alpha: 1.0)

应该改变背景色。 但是,事实并非如此。 如何从AppDelegate更改ViewController的背景颜色?

您正在使用var theViewController = ViewController()创建视图控制器的新实例,并将新实例存储在您设置的全局变量中,但是该实例从未在任何地方使用。

您想要的是应用程序使用的视图控制器实例。 我不确定如何设置应用程序视图层次结构,但是您可能想为应用程序获取根视图控制器。

在AppDelegate类中,您可以尝试

theViewController = self.window?.rootViewController
theViewController.view.backgroundColor = UIColor (red: 0, green: 1.0, blue: 0.5, alpha: 1.0)

您可以尝试说出您的根是否是navigationController

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    // wait until vc is displayed

    DispatchQueue.main.asyncAfter(deadline: .now() + 4) {

        if let vv = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController {

            vv.viewControllers.last?.view.backgroundColor = UIColor.blue
        }
    }

    return true
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM