2011-01-05 83 views
0

我实现了一个导航控制器,它有10多个视图..在这里,通过向右滑动视图切换到下一个视图...向左滑动将使您的上一页。在这里我使用poptoviewcontroller进入prevous页面。iphone,ipad Navigationcontroller popToViewController不起作用

在每个页面中的每个页面都有一个菜单切换到所需的视图。在跳到特定视图后,如果我们向左滑动会带来先前访问的视图,而不是这个我只想按照菜单去上一页...

这里我使用了poptoviewcontroller的所有属性,但它可以工作建议。

thnks,

回答

0

终于我解决了这个问题。但实际上不使用setViewController方法。

这里虽然pushig视图本身我添加视图在堆栈中。即例如我想要去视图A到D意味着我添加B和C pushviewcontroller动画:NO;和D动画:是;

所以它的工作完美的我....

0

你要想想导航的视图控制器作为一个堆栈(如论文在你办公桌上堆)。

因此,如果将某物推入堆栈,当您从堆栈中弹出某些东西时,它将成为之前的项目。

我不确定你在做什么,但是我会在UINavigationController的setViewController:Animated方法中查看documentation。我认为这会帮助你解决问题。

+0

是有可能推动和弹出.. – nik 2011-01-05 08:58:25

+0

你可以有一个包含所有视图控制器一个NSArray之前添加所有viewControllers在一个共同的堆栈中,然后使你可以使用setViewController:(NSArray)array animated:但是,我觉得你的做法会更好地用UIScrollView完成? – mackross 2011-01-06 14:40:32

0

让我解释一下什么是nvaigationcontroller堆栈。

Stack = {root,A,B,C,D}。

当前可见视图是D.当您制作pushViewController(E)时,意味着您向堆栈添加了新视图,该视图变为可见:Stack = {root,A,B,C,D,E}。当你创建popViewController时,你删除了堆栈的最后一个元素,并将新的最后一个元素设置为可见,在我们的例子中,它变成了:Stack = {root,A,B,C,D},并且D是可见的。 现在,如果您选择popToRootController(A),它意味着您从堆栈中删除所有元素,直到顶层元素为A,并且它变得可见,因此在我们的示例中它是Stack = {root,A}。

我希望我能正确理解你的问题并解释你,以便你能正确理解层次结构。如果不是,请重新表述您的问题。

+0

嗨danu谢谢你的回复在这里,我在做什么是从控制器A(按照你的例子)我推视图控制器D.如果我在D做popToController它会去'A'而不是这个我很想去prevoius onr ie'C'view controller .. – nik 2011-01-05 08:57:04

+1

你不能那样做。正如我所理解的那样,因为你没有C中的堆栈。据我了解最初你有下一个情况。 Stack = {root,A}你制作pushVieController(D),我们的堆栈现在是Stack = {root,A,D}。我们在堆栈中没有任何C视图。我知道你有这个逻辑,你想回到C.我推荐你 - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)来自同一个类的动画。 – 2011-01-05 10:00:12

+0

在这种情况下,你将能够做下一件事:Stack = {root,A};你添加了[navigationController setViewControllers:(NSArray *){B,C,D} animated:NO)你的堆栈将变成Stack = {root,A,B,C,D},这种情况下你会按Back或者使用popviewController将从D到C. – 2011-01-05 10:05:09

相关问题