当子视图覆盖当前视图时,检测导航控制器动画完成

时间:2013-05-31 02:49:14

标签: ios uinavigationcontroller

我的视图显示在navigation controller中。我在导航控制器的视图中添加了subview,以便它覆盖除navigation bar本身之外的所有正在显示的视图。子视图已添加如下 - '[self.navigationController addSubView:mySubView];'

关于subView的某些操作,我想按顺序执行以下操作 -

  1. 使用动画弹出导航堆栈上的当前view controller然后。
  2. 弹出视图控制器并完成动画后,从导航控制器视图中删除subview
  3. 我需要这样做的原因是我需要在删除子视图之前显示导航栏标题的动画。

    所以我想完成导航控制器动画事件,然后删除子视图。

    viewDidAppearviewWillAppearnavigationController:didShowViewController:animated:没有帮助,因为subView涵盖了导航堆栈上的基础视图,并且这些方法永远不会被调用。

    目前我只是在延迟希望动画完成后删除子视图。但我知道这不是一种可靠的方式来做我想做的事。

    有没有其他方法可以完成我需要的事件序列?

1 个答案:

答案 0 :(得分:2)

导航控制器的子类,并实现委托方法navigationBar:didPopItem:,它在导航栏动画完成后调用。您可以使用该方法删除子视图。