[英]Storyboard: how to set initial viewcontroller for UIPageViewController with storyboard?
[英]How to set initial storyboard
您沒有以編程方式設置初始故事板。
這是它的工作原理。 您可以在主界面下的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.