返回执行的转场的正确方法是啥?

Posted

技术标签:

【中文标题】返回执行的转场的正确方法是啥?【英文标题】:What is the right way to go back a performed segue?返回执行的转场的正确方法是什么? 【发布时间】:2017-02-18 09:04:44 【问题描述】:

基本上,我有一个视图控制器,它使用[self performSegueWithIdentifier: sender:]; 推送到下一个视图控制器,在prepareForSegue 中,我想将 VC 的标题更改为“Back”,以便在下一个 VC 中,后退栏按钮项将是“返回”而不是最初的 VC 的标题。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

    self.title = @"Back";


现在的问题是,当我通过点击返回按钮返回到第一个 VC 时,我必须将标题改回初始标题,否则标题将保持为“返回”。

如果有像prepareForSegue 这样的方法,我可以得到目标 VC 并更改它的标题...

另一个例子是我有一个包含 3 个视图控制器的故事板,如下所示:

我隐藏了导航控制器以使用我自己的按钮返回转场。虽然这种方式可行,但我必须再添加 2 个 segue 才能返回到第一个 VC,这似乎很奇怪......

【问题讨论】:

【参考方案1】:

在您的故事板中,将 导航项 拖到您的第一个视图控制器上。将 Title 设置为视图控制器的标题,将 Back Button 设置为“Back”

或者,要以编程方式执行此操作,请创建一个具有 nil 操作和目标的 UIBarButtonItem,并分配给 navigationItem.backBarButtonItem(确保您在您即将到来的视图控制器中执行此操作来自

【讨论】:

太棒了!我在***上搜索并尝试了诸如“在viewDidLoad等中执行此操作”之类的答案。我不敢相信它就这么简单。然而,一个问题是,当点击返回按钮时,有没有一种方法可以让我执行一项操作(比如提醒“你确定要返回吗?”)? 很遗憾,无法拦截后退按钮。最接近的方法是将自定义 leftBarButtonItem 添加到子视图控制器,连接到 IBAction,然后从那里显示警报 是的,你是对的。在这里看到了这个问题,而是做了按钮实现。无论如何,非常感谢! ***.com/questions/18824186/…【参考方案2】:

在方法prepareForSegue:中,可以通过segue.destinationViewController得到destinationViewController。我想这就是你想要的。

【讨论】:

不,它不起作用。没有 segue 指示回到以前的 VC。我尝试使用相同的 segue(向前导航的那个),当我点击背面时,它并没有触发我的动作。 if ([segue.identifier isEqualToString:@"oneMinChallenge"]) //action

以上是关于返回执行的转场的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

验证对象是不是存在于 django 视图中而不返回 404 的正确方法是啥?

返回模板 lambda 函数的正确方法是啥?

使用自定义转场执行自定义转换的正确方法 - 没有副作用

更改 UITextView 的键盘返回按钮的正确方法是啥

处理 GetDIBits() 返回的像素缓冲区的正确方法是啥?

从 GRPC c++ 服务器实现返回“未找到”响应的正确方法是啥?