gpt4 book ai didi

ios - UINavigationController 左边缘滑动和后退按钮行为之间的差异

转载 作者:行者123 更新时间:2023-12-01 18:43:07 25 4
gpt4 key购买 nike

我试图找出导航 Controller 的左边缘滑动和后退按钮行为之间的区别。我有一个错误,仅当您通过左边缘滑动导航返回时才会发生。如果您按下返回按钮,它会正常工作。没有进行任何自定义来启用或禁用后退导航或手势导航。

我发现关于这个主题的资源非常少,我只想更彻底地了解每个事件触发了哪些事件,以及它们在行为上的不同之处。

最佳答案

这个错误是否一直表现出来,或者当且仅当您开始左边缘滑动并取消它时它才会表现出来?我问的原因是我们过去编写的代码假定 viewWillAppear之前的 VC 和 viewWillDisappear当前一个总是在 viewDidAppear 之前和 viewDidDisappear , 分别。但是,对于交互式转换,这不再适用,因为 viewWillAppear/Disappear将在您开始转换时调用,但对应的 viewDidAppear/Disappear如果取消了交互式过渡,则可能不会。事实上,在 WWDC 2013 上介绍这个概念时,主持人开玩笑说他们应该重命名 viewWillAppear到“viewMightAppearviewWillProbablyAppeariReallyWishThisViewWouldAppear ”。

所以,看看你的viewWillAppearviewWillDisappear方法并确保你没有任何依赖于 View 实际出现和消失的东西,因为如果取消手势,你将看不到这些事件。

有关更多信息,请参阅 WWDC 2013 视频 Custom Transitions Using View Controllers .视频进行到一半多一点时讨论了交互式过渡。它讨论了如何实现您自己的交互式转换,但这些概念适用于导航 Controller 的内置左边缘滑动。

在标准的“后退”按钮过程中,从第二个 View Controller 弹出到第一个,事件顺序是典型的:

  • SecondViewController.viewWillDisappear
  • FirstViewController.viewWillAppear
  • SecondViewController.viewDidDisappear
  • FirstViewController.viewDidAppear

  • 但是,如果您开始向左滑动手势并暂停,则事件顺序为:
  • SecondViewController.viewWillDisappear
  • FirstViewController.viewWillAppear

  • 但是如果你停止手势并取消转换,而不是看到 SecondViewController.viewDidDisappearFirstViewController.viewDidAppear ,您将看到以下事件:
  • FirstViewController.viewWillDisappear
  • FirstViewController.viewDidDisappear
  • SecondViewController.viewWillAppear
  • SecondViewController.viewDidAppear

  • 根据您在这些各种“出现”相关的方法中所做的事情,如果没有正确完成,您可能会遇到问题。例如,如果您在 viewWillDisappear 中进行一些清理工作。 ,请确保您只清理您在 viewWillAppear 中设置的内容.或者如果你在 viewDidAppear 中做任何事情,请确保在取消交互式转换后再次调用该方法时不会出现问题。如果没有有关您在这些与外观相关的方法中所做的事情的信息,就不可能说出您的情况到底出了什么问题。

    但最重要的是,您只需要确保应用程序不会因为过渡开始而做出任何假设,它必然会完成。

    关于ios - UINavigationController 左边缘滑动和后退按钮行为之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40030510/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com