2017-07-13 22 views
0

我正在製作一個包含教程的快速應用程序。當我嘗試繼續回到主控制器時,標籤欄項目變爲灰色(它們應該是白色的)。這是因爲我在應用程序委託中設置了選項卡欄。有沒有辦法從視圖控制器以編程方式調用應用程序委託?在整個應用程序中重新調用應用程序代理

我想打電話給didFinishLaunchingWithOptions()函數

+1

可能的重複[如何在Swift中獲取對應用程序委託的引用?](https://stackoverflow.com/questions/24046164/how-do-i-get-a-reference-to-the- app-delegate-in-swift) – Pochi

+0

我會盡量避免在您的AppDelegate中放置大量自定義代碼,並在整個應用中引用它。我的建議是將UITabBarController子類化並在其中添加所需的任何邏輯。您應該能夠從其他UIViewController子類獲得對您的UITabBarController的引用。 – adrum

回答

1

如果你的意思是你在你的應用程序委託的方法,設置標籤欄到自定義顏色。然後是,(替換的AppDelegate到您的應用程序委託的類名,如果你改變了它):

let appDelegate = UIApplication.shared.delegate as? AppDelegate 

appDelegate?.yourCustomizeMethod() 

如果你的意思是,你自定義「didFinishLaunchingWithOptions」方法中的標籤欄,那麼你將不得不提取到它自己的自定義功能。

+0

會這樣工作。 –

+0

像什麼? – Pochi

+0

'如果讓appDelegate = UIApplication.shared.delegate as? AppDelegate { didFinishLaunchingWithOptions() }' –

1
if let appDelegate = UIApplication.shared.delegate as? AppDelegate { 
     //do something with appDelegate 
    } 
+0

如何在viewdidload中調用一個函數@Yun CHEN –