iOS 5故事板,以编程方式确定路径

时间:2011-10-25 12:50:55

标签: objective-c ios5 storyboard

我无法使用故事板实现以下目标:

未完成设置时: 运行应用程序 - >显示设置视图控制器 - >显示主导航控制器 设置完成后: 运行应用程序 - >显示主导航控制器

基本上,我希望应用程序在某些情况下以编程方式从设置视图开始,否则直接跳到主导航控制器。

我确实设法使用主导航控制器中的模态样式segue显示设置视图,但我不知道在显示主导航控制器之前如何显示。有什么想法吗?

3 个答案:

答案 0 :(得分:29)

默认情况下,实时显示主故事板中的初始视图控制器,并在应用启动时自动显示。为防止发生这种情况,您需要从info.plist文件中删除UIMainStoryboardFile设置。

如果没有默认的视图控制器,您现在可以在app启动时以编程方式创建一个。请参阅UIStoryboard documentation。使用+storyboardWithName:bundle:加载故事板,然后使用–instantiateViewControllerWithIdentifier:创建正确的视图控制器。您还需要创建一个主UIWindow并将视图控制器的视图添加到它,就像您以前使用基于.nib的UI一样。请注意,如果没有UIMainStoryboardFile设置,则不会为您创建主窗口 - 请阅读explanation

答案 1 :(得分:20)

我设法做得有点不同:

  1. 使用UINavigationController作为初始视图控制器。
  2. 创建一个根视图控制器,用于管理加载内容的决定。
  3. 创建一个Storyboard Segues,从根视图控制器到主视图和设置视图,并为segue提供正确的标识符。
  4. 使用根视图控制器中的适当标识符调用performSegueWithIdentifier
  5. 只是另一种解决方案,希望这会有所帮助。

答案 2 :(得分:3)

我做了类似amoshaviv的事情,他的建议是合理的。我做了一点略有不同,我会提供更多信息。 我创建了一个自定义MyInitialViewController类,派生自UIViewController,并使其成为初始视图控制器。 在故事板文件中,我为所有(在我的例子中为三个)可能的'真实'第一视图控制器创建了具有适当名称的模态segue。 在MyInitialViewController类中,我实现了

- (void)viewDidAppear:(BOOL)animated;

方法,首先执行检查切换到哪个视图,然后执行正确的

[self performSegueWithIdentifier:@"NameOfSegue" sender:self];

实际上,这使得MyInitialViewController只不过是一个在进入视图时执行的开关。我首先尝试在加载时执行此操作,因为我不关心实际看到此视图,但这不起作用,而viewDidAppear则不行。

为了使视觉流畅,我尝试了以下方法。在segues的属性中,我禁用了动画。我留空的视图,我给它一个与启动图像匹配的背景颜色。