2012-10-05 45 views
1

诸如Instapaper和Twitterrific之类的应用程序将启动到不是其导航堆栈的根视图的视图。我们知道这是因为初始视图已经有一个后退按钮。 Instapaper启动一层深度(Instapaper> Read Read)和Twitterific两层深度(帐户>帐户>所有推文)。UINavigationController Stack

什么是最有效的/推荐的方法使用故事板(也许pushViewController:animated:performSegueWithIdentifier:sender:)和一个人如何做到这一点,同时考虑到新的状态恢复的API,以减少视图我之间发生冲突的机会来实现这一行为想呈现和国家恢复过程要呈现的一个?

回答

0

你不能通过Storyboards发起一个segue,你必须编写代码。通过编写代码,我的意思是你可能想使用UINavigationController-setViewControllers:animated:方法,因为segues通常用于制作漂亮的动画转换,而不是初始化UI设置。

+0

我想你可能误解了我的问题。我在问什么是启动视图的最佳方式,它至少比我的导航堆栈中的根视图更深一层(以与提及的示例应用程序相同的方式),以及如何在不与新的状态恢复API。 –

+1

我建议你保存并恢复'UINavigationController'的堆栈到第二个VC,并且使其成为故事板中的初始视图控制器。这样你就可以在应用程序启动后设置导航堆栈。 –

+0

再说一遍,我不确定你在理解我在问什么。在启动时,我想要一个导航控制器自动跳转到第二个控制器,以便设置一个后退按钮,它将您带回第一个控制器。我也想以一种不会与新的状态恢复API产生冲突的方式来实现这一点。 –

1

如果视图控制器是一个第二个层次中,我会简单地UINavigationController- (void)pushViewController:animated:(与animated:NO)从其viewDidLoad方法调用。如果它更深,那么- (void)setViewControllers:而不是推。

+0

谢谢鲁道夫;这是我第一次想到的,但那不会与国家恢复相冲突吗? –

+0

说实话,我还没有玩过国家修复。也许你可以从'application:didDecodeRestorableStateWithCoder:'检查导航控制器(比如最顶级的控制器),然后决定怎么做。 –

+0

顺便说一句,抱歉 - 我没有仔细阅读你的问题,这就是为什么我没有提到国家恢复的事情。无论如何,很好的问题。 –