【问题标题】:navigationcontroller to be set further down in navigation programmatically导航控制器以编程方式在导航中进一步设置
【发布时间】:2011-05-27 09:23:42
【问题描述】:

我有一个导航控制器向下穿过 4 个屏幕/级别,因此用户可以做出选择,然后他们在其他屏幕上做很多事情,完成后,我将它们设置回第 4 个视图/屏幕/级别导航控制器。很容易到这里...但是 后退按钮将他们带回到一堆东西(显然)而不是我希望的第 3 级!

请问这个怎么做?我真的很想避免“覆盖”后退按钮,并希望有一种更优雅的方式以编程方式快速下降,以便一切设置正确

感谢您的帮助

哎呀

编辑 1: 感谢 Jason 抽出时间帮助我 - 非常感谢。 问题是我不知道如何将该语句放在哪里,因为逻辑位置将在“返回”函数的回调中 - 我需要创建它,因为我没有看到它并且它可能会与当我自然向下钻取时,正常的“返回”按钮。

我真正想做的是以一种不可见的方式做的是回到 1 级并以编程方式降到 3 级(所以看起来我从 4 回到了 1 到 3 - 正是我想要的实际上我在 1, 2, 3) 中下降了 - 然后如果用户继续想要返回它就会自然返回,因为我最初正常向下钻取。

希望我清楚

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

【问题讨论】:

  • 那你为什么要压倒一切?如果您不这样做,默认行为是弹出到堆栈上的最后一个视图。
  • 感谢你们让我思考我在做什么,我终于解决了。我将 UINavigatiionController 的实例保存在全局变量(单例模式)中;然后我使用 popToRoot 回到导航的根目录;然后依次弹出我的视图 2 和 3,没有动画;并用动画弹出我的视图 4。结果是当我点击返回时,它有预期的行为去查看 3.Thanks!

标签: iphone button uinavigationcontroller back


【解决方案1】:

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

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

有点像

[self.navigationController popToViewController:thirdLevelViewController animated:YES]

编辑:geebee,在您最初的问题中“向下通过 4 个屏幕/级别,以便用户可以做出选择,然后他们在其他屏幕上做一堆事情,完成后"

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

按下返回会转到其他屏幕的唯一方法是,如果您只是将视图控制器推入堆栈但从未弹出它们。我想这可能是你的问题?没有看到代码,我真的不能说太多。

EDIT2:天哪,我不太确定我是否了解您的应用程序中发生了什么,我不确定我还能为您提供多少帮助,除非我能看到您尝试做的一些代码与

【讨论】:

  • 感谢你们让我思考我在做什么,我终于解决了。我将 UINavigatiionController 的实例保存在全局变量(单例模式)中;然后我使用 popToRoot 回到导航的根目录;然后依次弹出我的视图 2 和 3,没有动画;并用动画弹出我的视图 4。结果是当我点击返回时,它有预期的行为去查看 3.Thanks!
  • 很高兴你把它整理出来 :) 虽然可能不是最优雅的解决方案......不管怎样都行?
  • 我也是一个纯粹主义者,但我实际上认为这没关系,因为它只有 4 行代码和一个易于阅读和维护的变量 - 而不是一个狡猾的公式来理解我需要多少回到堆栈中总是有可能出错然后崩溃 - 欢呼 - 再次感谢
猜你喜欢
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多