2017-07-30 147 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 –

相关问题