在导航控制器中单击后退按钮时调用哪个方法?

Posted

技术标签:

【中文标题】在导航控制器中单击后退按钮时调用哪个方法?【英文标题】:Which method is called when back button clicked in navigation controller? 【发布时间】:2011-12-18 10:55:36 【问题描述】:

我想在导航控制器中单击后退按钮时保存 DB。

所以我会在方法中插入代码。

在导航控制器中单击后退按钮时调用什么方法?

【问题讨论】:

使用标志变量。如果 DB 未更新,则在 viewWillDisappear 方法中更新 DB。这应该有效。 【参考方案1】:

按你说的做,看UINavigationControllerDelegate协议,即方法:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

当 viewController 参数不再是您的视图控制器时,您应该保存。

但是,在 viewWillDisappear: 上这样做可能是一个更好(也更简单)的想法。

【讨论】:

【参考方案2】:

也许它不适合使用,但这对我有用。不要忘记设置 UINavaigationController 委托。

- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
                                   animationControllerForOperation:(UINavigationControllerOperation)operation
                                                fromViewController:(UIViewController *)fromVC
                                                  toViewController:(UIViewController *)toVC

    NSLog(@"from VC class %@", [fromVC class]);
    if ([fromVC isKindOfClass:[ControllerYouJustPopped class]])
    
        NSLog(@"Returning from popped controller");

    

    return nil;

【讨论】:

以上是关于在导航控制器中单击后退按钮时调用哪个方法?的主要内容,如果未能解决你的问题,请参考以下文章

我可以用 xcode 中的“导航控制器后退按钮”传递数据吗

UIPageViewController 更改导航栏后退按钮标题

导航控制器中不显示后退按钮

单击后退按钮时,导航堆栈中 VC 的 UINavigationBar 标题颜色不会改变

iOS导航控制器中的后退按钮回调

单击隐藏选项卡视图控制器中的后退按钮时如何显示选项卡