Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 有人能解释一下UINavigationController setViewController和popToViewController吗_Iphone_Uinavigationcontroller - Fatal编程技术网

Iphone 有人能解释一下UINavigationController setViewController和popToViewController吗

Iphone 有人能解释一下UINavigationController setViewController和popToViewController吗,iphone,uinavigationcontroller,Iphone,Uinavigationcontroller,我熟悉创建新的viewcontroller并将其推到堆栈上的想法。到目前为止,我刚刚创建了视图控制器的一个实例并将其推送。现在,我遇到了一个问题,我的3个不同的视图控制器是查看数据的相关方式。My RootViewController有3个要启动的图标,当您按下图标时,将按下第一个视图控制器。我目前没有在数组中设置视图控制器,因为我不确定这能给我带来什么,也不知道它是如何工作的 场景1:单击图标1(推送vc1),单击vc1中弹出窗口中的一个表,它将推送至vc3。然后单击vc3中的某个内容,它将转

我熟悉创建新的viewcontroller并将其推到堆栈上的想法。到目前为止,我刚刚创建了视图控制器的一个实例并将其推送。现在,我遇到了一个问题,我的3个不同的视图控制器是查看数据的相关方式。My RootViewController有3个要启动的图标,当您按下图标时,将按下第一个视图控制器。我目前没有在数组中设置视图控制器,因为我不确定这能给我带来什么,也不知道它是如何工作的

场景1:单击图标1(推送vc1),单击vc1中弹出窗口中的一个表,它将推送至vc3。然后单击vc3中的某个内容,它将转到vc1

场景2:点击图标3(按下vc3),点击一些东西并转到vc1

因此,我遇到的问题是在场景1中,返回到vc1似乎是最有意义的,这样他们就没有vc1/vc3/vc1堆栈,并且像那样查看数据两次。但是在场景2中,由于我是从vc3而不是vc1开始的,所以我应该推vc1。但在这两种情况下,用户单击同一个东西从vc3转到vc1,那么我如何判断它们来自哪个viewController才能推送或弹出到vc1


所以我想这就是我认为SetViewController或popToViewController可能会派上用场的地方,但我不确定它们是如何工作的,是否有人可以提供一些简单的示例片段让我开始学习(假设这种方法可以)。谢谢

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


我。。。最后两个建议提倡意大利面条逻辑,应该少用。

从你的描述中,我觉得你应该使用一个导航控制器,你可以将它推上推下。顺便说一句,导航栏不必是可见的

听起来你有时应该在推下一个vc之前先弹出当前vc。您需要检查viewControllers数组的计数-如果当前计数大于1,则在按下之前弹出,否则只需按根视图控制器

或者,您可以在每次按下之前使用PoptorootViewController:NO