导航“后退”按钮暂停,以便在弹出之前做一个快速动画

Posted

技术标签:

【中文标题】导航“后退”按钮暂停,以便在弹出之前做一个快速动画【英文标题】:Nav "Back" button pause in order to do a quick animation before pop 【发布时间】:2011-06-24 20:30:11 【问题描述】:

我有一个导航控制器和一个滚动视图。

当用户点击“返回”按钮时,我想在视图“弹出”转换开始之前将滚动视图设置为偏移 0、0。

最好的方法是什么?

【问题讨论】:

【参考方案1】:

UINavigationBarDelegate 是委托类,它实现了-navigationBar:shouldPopItem。试着把你的动画代码放在那里。

或者,你可以试试这个

-(void) viewWillDisappear:(BOOL)animated 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) 
       // back button was pressed.  We know this is true because self is no longer
       // in the navigation stack.  Put animation code here
    
    [super viewWillDisappear:animated];

【讨论】:

我试过了,你只看到中殿控制器的过渡。当您再次进入视图时,内容会在 0、0 处滚动。因此需要某种方式来推迟“返回”操作或其他方式。 现在 viewWillDisappear 得到了改进,两个动画同时开始。让我试试 shouldPopItem... @vgr:我很想知道哪种方法效果更好。请在您试用后回复shouldPopItem 会的。调查为什么我不能让 shouldPopItem 工作。它永远不会从 UIViewController 中调用。我确实在 init 中设置了委托,就像这样“self.navigationController.navigationBar.delegate = self;”

以上是关于导航“后退”按钮暂停,以便在弹出之前做一个快速动画的主要内容,如果未能解决你的问题,请参考以下文章

基于导航的应用程序的翻转动画

按下导航栏中的后退按钮并弹出视图B后更新视图B后面的视图A.

导航控制器中的后退按钮动画

xCode导航后退按钮不弹出详细视图

UINavigationController 仅隐藏导航栏 - 后退动画问题

导航栏控制器中的自定义后退按钮