我无法使用故事板实现以下目标:
未完成设置时: 运行应用程序 - >显示设置视图控制器 - >显示主导航控制器 设置完成后: 运行应用程序 - >显示主导航控制器
基本上,我希望应用程序在某些情况下以编程方式从设置视图开始,否则直接跳到主导航控制器。
我确实设法使用主导航控制器中的模态样式segue显示设置视图,但我不知道在显示主导航控制器之前如何显示。有什么想法吗?
答案 0 :(得分:29)
默认情况下,实时显示主故事板中的初始视图控制器,并在应用启动时自动显示。为防止发生这种情况,您需要从info.plist文件中删除UIMainStoryboardFile
设置。
如果没有默认的视图控制器,您现在可以在app启动时以编程方式创建一个。请参阅UIStoryboard documentation。使用+storyboardWithName:bundle:
加载故事板,然后使用–instantiateViewControllerWithIdentifier:
创建正确的视图控制器。您还需要创建一个主UIWindow并将视图控制器的视图添加到它,就像您以前使用基于.nib的UI一样。请注意,如果没有UIMainStoryboardFile
设置,则不会为您创建主窗口 - 请阅读explanation。
答案 1 :(得分:20)
我设法做得有点不同:
UINavigationController
作为初始视图控制器。performSegueWithIdentifier
。只是另一种解决方案,希望这会有所帮助。
答案 2 :(得分:3)
我做了类似amoshaviv的事情,他的建议是合理的。我做了一点略有不同,我会提供更多信息。 我创建了一个自定义MyInitialViewController类,派生自UIViewController,并使其成为初始视图控制器。 在故事板文件中,我为所有(在我的例子中为三个)可能的'真实'第一视图控制器创建了具有适当名称的模态segue。 在MyInitialViewController类中,我实现了
- (void)viewDidAppear:(BOOL)animated;
方法,首先执行检查切换到哪个视图,然后执行正确的
[self performSegueWithIdentifier:@"NameOfSegue" sender:self];
实际上,这使得MyInitialViewController只不过是一个在进入视图时执行的开关。我首先尝试在加载时执行此操作,因为我不关心实际看到此视图,但这不起作用,而viewDidAppear则不行。
为了使视觉流畅,我尝试了以下方法。在segues的属性中,我禁用了动画。我留空的视图,我给它一个与启动图像匹配的背景颜色。