[英]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.