2011-05-27 49 views
0

我有一个导航控制器下来通过4个屏幕/水平,以便用户可以做出他们的选择,然后他们在其他屏幕上做了一堆事情,当完成后,我把它们放回导航控制器的第4个视图/屏幕/级别。轻松到这里...但 后退按钮将他们带回一堆事情(显然),而不是我希望的第三级!导航控制器被设置在导航程序进一步向下

如何做到这一点?我真的想避免“overwritting”返回按钮,想的下降编程速度非常快,因此所有的设置是否正确

感谢您的帮助

geebee

编辑1更优雅的方式: 感谢贾森花时间帮助我 - 感激。 问题是,我不知道如何把这个陈述放在哪里,因为合乎逻辑的地方将在“后退”功能的回调中 - 我需要创建,因为我没有看到它,它可能会搞砸正常的“后退”按钮,当我钻自然。

我真正想要做的是做一个看不见的方式,就是回到第一级,然后以编程方式下降到第三级(就像我从4回到第三级一样 - 就像我一样想要在现实中我下了1,2,3) - 然后,如果用户继续想要返回,它会自然返回,因为我最初是正常钻取的。

希望我很清楚

编辑2: 你是对的杰森。当我正在做其他一些事情时,我不再推动任何视图控制器 - 我完全在我的应用程序中的其他地方询问一些问题并多次获得答案。然后在这些任务结束时,我需要重新定位自己的最后一个导航控制器,这是第4级,所以我只是启动它 - 然后我遇到了后退按钮的问题......我完全知道我是如何从通过单例类(作为全局变量)从1级到4级,因此这就是为什么我在想可能是我应该无形地将自己定位在level1上,并钻取到级别4,以便后退按钮按照它应该的方式工作。 再次感谢您抽出时间,因为我卡住了。

+0

你为什么压倒一切呢?如果你不默认行为是弹出到堆栈上的最后一个视图。 – 2011-05-27 09:37:25

+0

我终于解决了,谢谢你们让我想我在做什么。我在全局变量(单例模式)中保存了UINavigatiionController的实例;然后我使用popToRoot返回到我的导航根目录;然后我反过来用无动画弹出我的意见2和3;并用动画弹出我的视图4。结果是当我点击它时有预期的行为去查看3.谢谢! – geebee 2011-05-30 21:35:14

回答

3

我想你想要的是这种方法?

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

所以像

[self.navigationController popToViewController:thirdLevelViewController animated:YES]

编辑:geebee,在您最初的问题:“经过4个屏幕下去/水平,使用户可以自己选择,然后他们做了一堆东西其他屏幕和完成后

你能向我们解释你是什么意思的那条线吗?我认为这就是现在人们试图回答你的问题的困惑。在做这些其他事情时,你是否将更多的视图控制器推入堆栈?

回退到你的其他屏幕的唯一方法是,如果你只是推视图控制器到堆栈,但从来没有弹出它们。我认为这可能是你的问题?没有看到代码,我不能说太多。编辑2:geebee,我不太确定我明白你的应用程序中发生了什么,我不知道我能帮助你多少,除非我能看到你想要做的一些代码东西与

+0

我终于解决了,谢谢你们让我想我在做什么。我在全局变量(单例模式)中保存了UINavigatiionController的实例;然后我使用popToRoot返回到我的导航根目录;然后我反过来用无动画弹出我的意见2和3;并用动画弹出我的视图4。结果是当我点击它时有预期的行为去查看3.谢谢! – geebee 2011-05-30 21:36:16

+0

很高兴你把它整理出来:)虽然可能不是最优雅的解决方案......无论什么工作? – Jason 2011-05-30 22:29:07

+0

我也是一个纯粹主义者,但我确实认为它是可以的,因为它只有4行代码和一个清晰的读取和维护变量 - 而不是一个狡猾的公式来理解我需要回到栈中的多少总是有可能让它错误,然后崩溃 - 欢呼 - 并再次感谢 – geebee 2011-05-31 21:53:46