【问题标题】:Disable navigation bar's back button禁用导航栏后退按钮
【发布时间】:2014-01-16 17:52:15
【问题描述】:

我正在尝试禁用导航栏后退按钮项(变为灰色且不响应触摸)。

我尝试了以下方法:

[self.navigationItem.backBarButtonItem setEnabled:NO];

这不起作用。禁用右键项目就像一个魅力。

令人惊讶的是,我在 SO 上找不到类似的问题。最接近的一个是关于隐藏按钮(顺便说一句),但这不是那么优雅(或者添加一个标签来覆盖按钮并防止触摸保持与后退按钮相同的颜色->也不那么优雅:/) .

我应该提到,视图控制器是一个由另一个导航控制器推送的表格视图控制器。 (即后退按钮是自动添加的,而不是通过 IB 或编程方式)

有什么想法吗?

【问题讨论】:

  • 将 tableViewController.navigationItem.leftBarButton 设置为 nil 有效吗?
  • 那行不通。按钮仍处于启用状态...
  • 但这完全隐藏了按钮。我希望按钮被禁用(灰显),就像右键项目一样
  • 我认为使用默认的后退按钮你不能。您可以创建一个自定义按钮,然后您可以禁用它。或者您可以对默认后退按钮进行自定义操作并检测用户按下
  • “令人惊讶的是,我在 SO 上找不到类似的问题”......而且令人惊讶的是,这个问题并没有那么受欢迎。 +1

标签: ios7 uinavigationcontroller uinavigationbar


【解决方案1】:

你可以隐藏使用

[self.navigationItem setHidesBackButton:YES animated:YES];

【讨论】:

    【解决方案2】:

    您确实需要创建一个自定义后退按钮才能禁用它。下面是一个简单的例子(不需要隐藏 backButtonItem):

    请注意,您可能希望禁用向后滑动手势(请参阅此处:How to disable back swipe gesture in UINavigationController on iOS 7

    class MyClass: UIViewController {
        private var backButton: UIBarButtonItem!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            backButton = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: "goBack")
    
            navigationItem.leftBarButtonItem = backButton
        }
    
        func goBack() {
            navigationController?.popViewControllerAnimated(true)
        }
    
        func toggleBackButton() {
            backButton.enabled = (backButton.enabled == false) ? true : false
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2015-05-02
      • 2020-10-15
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多