2012-06-09 38 views
2

我有一个基于UITabBarController的应用程序。我想发布配置指南 - 一系列视图 - 第一次启动应用程序。这当然与普通的标签导航毫无关系,我希望配置视图覆盖整个屏幕。在基于UITabBarController的应用程序启动时启动配置向导

我具有支持UIApplicationDelegate协议的类,我试图从application:didFinishLaunchingWithOptions方法启动我结构图用下面的代码:

UIViewController *vc = [[self.mainViewController storyboard] instantiateViewControllerWithIdentifier:@"StartupWelcomeViewController"]; 
[self.mainViewController presentModalViewController:vc animated:YES]; 

(该mainViewController是到的UITabBarController的引用)

显然application:didFinishLaunchingWithOptions在标签栏视图viewDidLoad之前被调用。如果我将上面的代码移到一个在viewDidLoad之后调用的函数中。

我在UIApplicationDelegate协议或UITabBarController类中找不到方法,该方法在标签栏视图中调用viewDidLoad方法之后调用。

哪里是启动我的配置指南的好地方,我该怎么做?

回答

2

(老问题,但档案的缘故...)

如果你想你启动向导出现在标签视图控制器的顶部,然后将标签视图控制器应该呈现它;你会从viewDidLoad之类的地方做到这一点。如果您不喜欢在标签栏控制器中使用该代码,请将其放入例如应用程序委托并只需要标签栏控制器调用它。

一个可以说是更清晰的替代方法是在应用程序中没有自动显示的视图,而是从应用程序委托中编排所有内容 - 它检查配置向导是否已运行并选择显示该向导或标签栏控制器&因此是相关的UI。无论哪种情况,实例化代码都会以问题中显示的方式从故事板中检索相关的命名对象。启动向导会在完成时使用您自己设计的非常简单的委托协议回调应用程序委托,这将为您提供显示标签栏所需的提示,方法是调用相同的show-tabs方法无论标签栏是立即显示还是配置完成后显示。

第二种方法的确意味着你的故事板做得更少,而你的代码做得更多。以我目前的经验来看,随着应用程序的成熟,它的功能开始延伸到自动故事板行为提供的相对基本的流程选项之外,这似乎发生在某种必然性上。

脚注

  • 您阻止故事板无法显示在启动时通过关闭任何看法是初始视图控制器在Xcode的故事板编辑器的属性检查器(命令选项-4)所示选项,当您选择当前用于此目的的控制器。它将位于故事板编辑器区域的最左侧,并且有一个指向它的箭头,从“无处不在”从左到右。一旦你这样做,你会得到一个构建警告,这是相当恼人的;您可以决定添加一个虚拟的空白视图控制器,并将其设置为初始视图,纯粹为了避免该警告。
+0

谢谢。我通过更改根视图控制器来解决它。 –

相关问题