2011-11-17 90 views
1

我熟悉创建一个新的viewcontroller并将其推入堆栈的想法。到目前为止,我刚刚创建了一个视图控制器的实例并将其推送。现在我遇到了一个问题,即我的3个不同的视图控制器与查看数据的方式有关。我的RootViewController有3个图标可以启动,并且当您按下图标时,可以按第一个视图控制器。我目前不会将视图控制器设置在一个数组中,因为我不确定购买什么或者它是如何工作的。场景1:点击图标1(推送vc1),点击vc1弹出窗口中的一个表格,它会推送到vc3。然后你点击vc3中的某个东西,它会转到vc1。有人可以解释UINavigationController setViewController和popToViewController

情景2:点击图标3(推vc3),点击某物并转到vc1。

所以我遇到的问题是在场景1中,似乎最有意义的是回弹到vc1,所以他们没有堆叠的vc1/vc3/vc1并且正在查看数据两次像那样。但是在场景2中,由于我从vc1的vc3开始,我应该推送vc1。但是,在这两种情况下,用户点击相同的东西从vc3转到vc1,那么如何知道它们来自哪个viewController以推送或弹出到vc1?

所以我想这就是我认为setViewControllers或popToViewController可能会派上用场的地方,但我不确定这些是如何工作的,以及是否有一些简单的示例片段可以让我开始使用(假设这种方法没问题)。谢谢!

回答

1

从您的描述中,我听起来应该使用一个导航控制器,您可以按下并弹出和关闭。顺便说一句,导航栏不一定是可见的。

这听起来像你应该在推下一个vc之前弹出当前的vc。您将需要检查viewControllers数组的计数 - 如果当前计数大于1,则在推送之前弹出,否则按照您在根视图控制器处的方式推送。

或者,您可以在推送前每次使用popToRootViewControllerAnimated:NO。

1

UINavigationController允许你管理你的视图。 setViewController允许您设置哪个控制器处理您的视图。 popToViewController将当前视图控制器从堆栈中移出到指定视图。

IMO ...最后2个宣传意大利面条逻辑,应该谨慎使用。