使用后退按钮展开 segue 时执行代码

Posted

技术标签:

【中文标题】使用后退按钮展开 segue 时执行代码【英文标题】:Perform code when unwind segue with back button 【发布时间】:2015-02-16 01:17:19 【问题描述】:

我想在 segue 后退一步时执行一些代码。 For example, when the back button gets selected, I want to perform some code.

我无法从后退按钮创建新的展开动作,因为情节提要中没有后退按钮。有没有办法在选择后退按钮后插入代码?

【问题讨论】:

如果您只能从该特定视图返回,则可以使用viewWillDisappear(否则在视图层次结构中返回和前进时会调用它)。 我不能那样做,因为我也要往前走。 【参考方案1】:

如果您想坚持使用默认的后退按钮,一种方法是子类化导航控制器,并覆盖 popViewControllerAnimated: 当您点击后退按钮时调用。

-(UIViewController *)popViewControllerAnimated:(BOOL)animated 
    UIViewController *vcToBePopped =[super popViewControllerAnimated:animated];
    id vc = self.viewControllers.lastObject; // this will be the controller you're going back to
    if ([vc isKindOfClass:IntendedViewController class])  // replace IntendedViewController with the actual class name you care about
        [(IntendedViewController *)vc someMethod];
    

    return vcToBePopped;

【讨论】:

我不认为有一种方法叫做popViewController。如果你想说我应该添加一个新的,应该在哪里调用它? @MikeRally,我不是说有一个叫popViewController的方法,我说的是popViewControllerAnimated:,还有这么一个方法。你看过 UINavigationController 类参考吗? Xcodes 智能检查器没有捡起它。我检查了文档,正如你所说,它确实有。所以我不确定发生了什么? 哦。我没有子类化导航控制器。但是当我在intendedViewController 尝试我的课程时,它没有接听课程? (我确实导入了它) @MikeRally,我不知道为什么找不到,只要你导入它,并且拼写正确。

以上是关于使用后退按钮展开 segue 时执行代码的主要内容,如果未能解决你的问题,请参考以下文章

未触发自定义 segue 的展开

后退按钮刷新/重新加载 uipickerview 内容

目标 C:后退按钮 segue 不起作用

自定义 Segue NavBar 后退按钮

没有显示 segue 显示的快速后退按钮

Segue 使用错误的动画和后退按钮未显示 [关闭]