gpt4 book ai didi

ios - 通过弹出 navigationController 或使用标签栏来识别是否到达 viewController 的更好方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:59 25 4
gpt4 key购买 nike

尝试澄清:我希望能够区分以下两种情况:

  • 一个 viewController 的 View 由于弹出而变得活跃。
  • viewController 的 View 因 tabBar 导航而变得活跃

在我正在处理的应用程序中,我需要知道 viewController 是否由于其 navigationController 被弹出而被呈现。我看过这个post并认为我已经通过简单地调用找到了解决方案:

BOOL wasReachedByPopping = !self.isMovingToParentViewController;

在我的viewWillAppear: 方法中

这在大多数情况下工作正常,但不幸的是,当通过 tabBarController 切换 navigationController 时会给出误报。我一直在考虑将 BOOL 添加到我的名为 pushNewController 的 viewController 中,它将在推送之前设置为 YES。

self.pushedNewController = YES; // whenever I plan to push

这应该工作得很好,但我真的很不高兴不得不将它建立在像持久的 BOOL 状态这样困惑的东西上。谁有更好的方法来确定 viewController 是否被 pop 到达?


编辑:我很欣赏下面的努力,但它们似乎只提供了我已经拥有的完全相同的功能。没有方法可以区分通过标签栏导航弹出或移动到。似乎我将不得不选择一个内部 BOOL 来存储 viewController 是否请求推送。对于任何感兴趣的人,我按以下方式设置它:

- (void)viewDidDisappear:(BOOL)animated{
self.disappearedDueToPush = (self != [self.navigationController.viewControllers lastObject]);
}

最佳答案

你看过 UINavigationControllerDelegate 方法吗:

– navigationController:willShowViewController:animated:
– navigationController:didShowViewController:animated:

当一个 View Controller 被插入或弹出你的导航栈时,这些被调用。

参见 Apple docs了解更多信息。

关于ios - 通过弹出 navigationController 或使用标签栏来识别是否到达 viewController 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578515/

25 4 0