我有一个UINavigationController子类,它管理一个自定义导航栏。此导航栏的外观取决于顶视图控制器。我向顶视图控制器询问-pushViewController:animated:
或-popViewControllerAnimated:
发生时要显示的条形类型。
问题是,当用户开始滑动时会播放导航栏类型更改,但我找不到任何告诉我滑动成功的事件,因此如果用户取消滑动,我会卡在上一个视图控制器,在导航堆栈中具有所需的导航栏外观。
我尝试了UINavigationControllerDelegate
,但-navigationController:didShowViewController:animated:
和-navigationController:didShowViewController:animated:
都没有被调用。我的第二个想法是使用interactiveGestureRecognizer
,但似乎它在成功和取消后滑动时都成功结束,并且topViewController
在调用识别器事件时仍然是相同的。
我知道,顶视图控制器的-viewDidAppear
将在取消滑动后再次调用,但我不希望我的用户在其控制器中实现任何逻辑以支持我的导航实现。
有什么想法吗?
答案 0 :(得分:3)
尝试使用UINavigationControllerDelegate,您可以依赖其回调来了解何时显示viewController。
Getting interactivePopGestureRecognizer dismiss callback/event