如何更改默认的iOS返回行为以避免在两个视图之间来回切换?

时间:2012-03-22 16:59:14

标签: ios cocoa-touch navigation

我有一个应用程序,其附加图像上描述了导航树。基本上,我有两个主屏幕(Home和Profile),两者都可以访问设置屏幕。在该设置屏幕上,我可以转到许多不同的特定设置屏幕进行更改。一旦用户接受任何这些屏幕中的更改,它就会返回主设置屏幕。

App Navigation 后退按钮的预期行为如下:

  • 从“设置”屏幕返回主页或个人资料,具体取决于用户首先进入设置屏幕的方式。
  • 从任何特定的S{x}屏幕,它应该返回主设置屏幕。

我目前正在使用默认的返回行为,但我在以下情况下遇到了问题:

Home -> Settings -> S1 -> Settings -> S1 -> Settings

如果用户按下后退按钮,我希望它返回主屏幕,但它会返回S1,然后返回设置,然后返回S1,依此类推,具体取决于多少次我进入了S1屏幕。

如何让“设置”视图“记住”它应该回到哪个屏幕?

2 个答案:

答案 0 :(得分:2)

不要手动管理视图控制器层次结构。使用UINavigationController,这就是它的设计目标。当您需要从主屏幕进入设置屏幕时,实例化您的设置视图控制器并将其推入堆栈。当您需要从设置屏幕转到S1时,实例化S1控制器并将其推入堆栈。当您需要从S1返回设置屏幕时,将其从堆栈中弹出。当您需要从设置屏幕返回到主屏幕时,将其从堆栈中弹出。

答案 1 :(得分:1)

听起来你想在这里使用堆栈。每次在不使用后退按钮的情况下导航到新页面时,将旧页面推入堆栈。每次使用后退按钮时,将最后添加的页面弹出堆栈。通过这种方式,您可以“记住”回复的页面,如您所说:)希望这会有所帮助!