簡體   English   中英

如何設置初始故事板

[英]How to set initial storyboard

我有兩個故事板,其中一個默認名為Main ,另一個我剛剛添加的名為Admin

Main用於客戶, Admin用於應用程序的所有者。

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

在此輸入圖像描述

PS我知道如何通過xcode更改它,但不知道編程。

您沒有以編程方式設置初始故事板。

這是它的工作原理。 您可以在主界面下的Xcode中列出主故事板,也可以不:

  • 如果你這樣做,那就是最初的故事板,期間。 該故事板在啟動時自動加載,其初始視圖控制器成為窗口的根視圖控制器(然后自動顯示界面)。

  • 如果不這樣(即主接口字段為空),則不會自動發生任何事情。 由您的代碼獲取視圖控制器,以某種方式(可能來自故事板),並使其成為窗口的根視圖控制器(並顯示界面)。

因此,總而言之,一切都是自動發生的,或者沒有任何事情自動發生 正如您所想象的那樣,沒有中間狀態,您可以通過編程方式更改內容,以便自動加載不同的故事板。

但是,有一種中間狀態允許加載主界面故事板, 但是你忽略它 在你的application:didFinishLoading...實現中application:didFinishLoading... ,你有時會在第二個項目符號點做我說的事情,即加載一個不同的視圖控制器並使其成為根視圖控制器。 這是有效的,因為我在第一個項目符號點中提到的自動內容已經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
}

您可以在app delegate中以編程方式設置故事板:

window = UIWindow(frame: UIScreen.main.bounds)
// Or "Admin"
window!.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()! 
window!.makeKeyAndVisible()

你實際上可以設置任何視圖控制器。 這就是無故事板方法的連線方式。

哦,在代碼中執行此操作的另一個好處是它會延遲故事板初始化。 如果您使用Xcode中的“主界面”設置,故事板實際上是在application:didFinishLaunchingWithOptions之前初始化的application:didFinishLaunchingWithOptions方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM