【问题标题】: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,这似乎很奇怪......

【问题讨论】:

    标签: ios objective-c uiviewcontroller segue


    【解决方案1】:

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

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

    【讨论】:

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

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

    【讨论】:

    • 不,它不起作用。没有 segue 指示回到以前的 VC。我尝试使用相同的 segue(向前导航的那个),当我点击背面时,它并没有触发我的动作。 if ([segue.identifier isEqualToString:@"oneMinChallenge"]) {//action}
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2012-01-24
    • 2018-08-12
    • 2020-06-28
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多