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

18
我在使用Storyboard时遇到了问题:
当设置未完成时: 运行应用程序->显示设置视图控制器->显示主导航控制器 当设置完成时: 运行应用程序->显示主导航控制器
基本上,我想让应用程序在某些情况下以编程方式从设置视图开始,并在其他情况下直接跳过到主导航控制器。
我已经成功使用模态样式segue从主导航控制器中显示设置视图,但我不知道如何在主导航控制器显示之前显示它。有什么想法吗?
3个回答

29
默认情况下,当您的应用程序启动时,会自动实例化并显示主故事板中的初始视图控制器。如果要防止此情况发生,您需要从info.plist文件中删除UIMainStoryboardFile设置。
没有默认视图控制器,您现在可以在应用程序启动时通过编程方式创建一个。参见UIStoryboard文档。使用+storyboardWithName:bundle:加载故事板,然后使用–instantiateViewControllerWithIdentifier:创建正确的视图控制器。您还需要创建一个主UIWindow,并将视图控制器的视图添加到其中,就像以前使用.nib为基础的UI一样。请注意,没有UIMainStoryboardFile设置时,不会为您创建主窗口-请阅读说明

谢谢,从info.plist中移除storyboard就解决了问题! - René
如何创建主要的 UIWindow - Siddharth

20

我采用了略有不同的方法:

  1. UINavigationController设置为初始视图控制器。
  2. 创建一个根视图控制器来管理加载决策。
  3. 创建从根视图控制器到主视图和设置视图的故事板连线,并为这些连线分配适当的标识符。
  4. 从你的根视图控制器使用正确的标识符调用performSegueWithIdentifier

这只是另一种解决方案,希望能有所帮助。


我觉得这是更好、更容易解决问题的方法。 - carbonr
同意,这似乎是一个更好的解决方案。我已经改变了接受的答案。 - René
1
如果您在应用程序中使用了分割视图控制器,我认为这种方法可能行不通 - 分割视图控制器需要是初始根视图控制器。 - radven
主/设置视图控制器上不会有一个返回按钮,导致空视图控制器吗? - anticyclope

3

我做了类似于amoshaviv的事情,他的建议非常好。但我的做法略有不同,我会提供更多信息。 我创建了一个名为MyInitialViewController的自定义类,它继承自UIViewController,并将其设置为初始视图控制器。 在故事板文件中,我创建了适当命名的模态转换,分别指向三个(在我这里)可能是“真实”第一个视图控制器的选项。 在MyInitialViewController类中,我实现了

- (void)viewDidAppear:(BOOL)animated;

这个方法首先会执行检查以确定切换到哪个视图,然后进行正确的操作。

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

有效地说,这使得MyInitialViewController只是在显示时执行的一个开关。我最初尝试在加载时执行此操作,因为我不想实际看到此视图,但是那样做没有效果,而viewDidAppear则有效。
为了使其外观平滑,我尝试了以下方法。在segue的属性中,我禁用了动画。我将视图保留为空,并给它一个与启动图像相匹配的背景颜色。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接