【问题标题】:Navigation bar back button change functionality导航栏后退按钮更改功能
【发布时间】:2014-11-21 08:51:32
【问题描述】:

我有 3 个视图控制器:A、B 和 C。A 是初始的,它有 2 个按钮:一个重定向到 B,第二个重定向到 C。当 B 被按下时,B 内的按钮被按下时用户被重定向到C. 现在在 C 中的导航栏上,当我按下后退按钮时,我希望始终重定向到 A,而不是 B。这可能吗?

这是我想要实现的基本功能:

一)

A->B->C      C back to A

b)

A->C         C back to A

【问题讨论】:

    标签: ios iphone ipad uinavigationcontroller navigationbar


    【解决方案1】:
    for (UIViewController *controller in self.navigationController.viewControllers)
    {
        if ([controller isKindOfClass:[A class]])
        {
            [self.navigationController popToViewController:controller
                                                  animated:YES];
            break;
        }
    }
    

    【讨论】:

    • 这是我需要的答案。非常感谢。
    【解决方案2】:

    在阅读了您所说的之后,我认为您的意思是为每个按钮实现自定义操作。我会这样做(在 Swift 中)是这样的:

    @IBAction func pressButton(sender : UIButton){
    
     var SecondView :ViewController2
     SecondView = self.storyboard?.instantiateViewControllerWithIdentifier("SecondView") as ViewController2
     self.presentViewController(SecondView, animated: true, completion:nil)
     self.viewWillDisappear(true)
    }
    

    这种方法我用过很多次,我知道还有另一种使用 segue 的方法,但您仍然使用 @IBActions。您只需创建一个新的 segue(标识符)并在 prepareforSegue 方法中说明当该 segue 出现时会发生什么触发

    【讨论】:

      【解决方案3】:

      唯一的方法是用自定义按钮替换后退按钮。

      【讨论】:

      • 您能详细说明一下吗?展示如何做,提供样本,使用方法?
      【解决方案4】:

      您可以使用presentview控制器作为模态视图来实现这一点。如果按下第一个按钮,则从当前b视图开始。如果按下第二个按钮,则在c视图中,在c视图控制器中放回按钮并添加委托并在其中实现委托视图控制器。您将不得不在视图控制器中关闭一个视图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-28
        • 2014-04-30
        • 1970-01-01
        相关资源
        最近更新 更多