在navigationController上向后向前滑动

3

每个UIViewController,从rootViewController开始使用[self.navigationController pushViewController nextView]来推送新视图。滑动正常工作。

我如何实现向前滑动的相同行为?更确切地说,我如何在通过向后滑动或后退按钮弹出UIViewController后保留它,以便在向前滑动的情况下再次添加它?

1个回答

5
为了跟踪您的视图控制器,您可以执行以下操作:
  • 在所有视图控制器中添加一个实例变量(作为强属性)nextViewController

  • 每当您推送新的视图控制器时,将nextViewController设置为被推送的视图控制器

  • 现在,每当用户向前滑动时,您只需推送nextViewController。 但是,请首先检查nil。 如果currentViewController.nextViewController = nil,则知道用户从未导航到此点,然后适当处理。 您可以忽略向前滑动,或者您可以向用户发送消息。

要处理滑动本身:

  • 只需将UISwipeGestureRecognizer添加到每个视图控制器的view中。

  • 然后,当调用您的滑动方法时,请检查手势识别器的direction属性。 如果它是向前滑动,则按上述方式推送nextViewController


但是视图不会被默认的返回行为销毁? - Johnny Everson
如果我想在底部构建一个面包屑导航栏怎么办?就像大点一样,用户可以直接转到启用的视图。我应该使用什么?或者这是一个全新的问题吗?我认为可能可以使用选项卡栏。你觉得呢? - Johnny Everson
如果您只有5个或更少的视图控制器,选用选项卡控制器似乎是最佳选择。它可以精确实现您想要的功能,并且您可以不使用导航控制器。但是,选项卡控制器仅限于显示5个选项卡。任何更多的视图控制器都将出现在最后一个选项卡的列表中,这可能不是您想要的。 - salo.dm
好的,谢谢。实际上我有7个。我想要的控制器是UIPageControl。我正在尝试弄清楚如何将其与我的导航控制器一起使用。再次感谢。 - Johnny Everson
结果发现导航控制器和UIPageControl不太兼容。最终我采用了你提出的完美解决方案。再次感谢你。 - Johnny Everson
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接