2017-07-30 152 views
-1

我有兩個故事板其中之一是默認名爲和我剛剛添加的另一個被稱爲管理如何設置初始故事板

主要用於客戶,管理用於應用程序的所有者。

我想知道如何以編程方式設置初始/主界面故事板。

enter image description here

P.S.我知道如何通過xcode改變它,但不知道編程。

回答

6

您不會以編程方式設置初始情節提要。

這是它的工作原理。您可以在主界面下的Xcode中列出主要故事板,或者您沒有:

  • 如果這樣做,那就是最初的故事板,句號。該故事板在啓動時自動加載,並且其初始視圖控制器成爲窗口的根視圖控制器(然後界面自動顯示)。

  • 如果你沒有(也就是說,如果主界面字段爲空),那麼沒有任何自動發生。它是由你的代碼來獲得視圖控制器,以某種方式(可能從故事板),並使其窗口的根視圖控制器(和顯示接口)。

所以,綜上所述,無論是發生的一切自動或沒有自動發生。沒有中間狀態,你似乎想象,在其中您可以通過編程方式改變的事情,這樣一個不同的故事板被自動加載。

但是,有一種中間狀態,您允許主界面故事板加載,但您忽略它。在您的實現的application:didFinishLoading...,你會再有時做我的第二個項目符號點,即加載不同視圖控制器,使其根視圖控制器說的東西。這工作,因爲我在第一點中提到的自動東西有已經被時間application:didFinishLoading...被稱爲發生。所以,實際上,你的代碼有時會允許自動填充,有時會覆蓋它。

在從自己的代碼這個例子中,我們要麼使用主接口故事板加載初始視圖控制器或我們加載從故事板的不同視圖控制器自己,這取決於用戶默認值的值:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    if let rvc = self.window?.rootViewController { 
     if NSUserDefaults.standardUserDefaults().objectForKey("username") as? String != nil { 
      self.window!.rootViewController = rvc.storyboard!.instantiateViewControllerWithIdentifier("root") 
     } 
    } 
    return true 
} 
+0

我不知道爲什麼有人低估了你的答案。無論如何,我剛剛投票,閱讀你的答案。 – hotspring

+0

對不起,我downvoted它偶然,而是意在給予好評的。 –

+0

@hotspring此外,您可能會發現在這個問題上的代碼示例幫助:https://stackoverflow.com/questions/10428629/programmatically-set-the-initial-view-controller-using-storyboards –

相關問題