如何隐藏导航栏按钮项

8
我的屏幕流程如下:

登录 -> 注册 -> 车辆详情

以上3个屏幕都在导航控制器中,但是用户不允许从车辆详情返回到注册页面。为了实现这一点,我已经:

override func viewWillAppear(animated: Bool)
    {
        self.navigationItem.setHidesBackButton(true, animated:true);
    } 

在CarDetails视图控制器中。因此,它隐藏了后退按钮,如果控制器在导航控制器中自动创建。

到目前为止还不错。

提供所有详细信息后,用户会进入主屏幕,在那里我有一个滑出菜单。从菜单中,用户也可以转到CarDetail Screen(以进行更新)。那时,我需要左边栏按钮作为滑出菜单按钮,而不是返回按钮。因此,我使用Storyboard创建了它。

问题在于,它在Registration视图之后也会显示。我需要在Car-Details View中对其进行条件性的显示/隐藏功能。

我已经为此挂钩,如下所示

override func viewDidLoad()
{
    super.viewDidLoad()


    if menuButtonVisibility
    {

        if self.revealViewController() != nil
        {
            menuButton.target = self.revealViewController()
            menuButton.action = "revealToggle:"
            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        }
    }

    else
    {

    }

    menuButtonVisibility=true
}

我只需要把这行放在else块中。

enter image description here


可能是如何为某些用户隐藏一个条形按钮项的重复问题。 - Santiago Carmona González
显示的是什么?“_问题在于它在注册视图之后也被显示出来了。_” - Bista
5个回答

15

您可以通过禁用按钮并更改tintColor来隐藏它,

self.navigationItem.rightBarButtonItem?.isEnabled = false
self.navigationItem.rightBarButtonItem?.tintColor = UIColor.clear

按照您的喜好,将其正确或左侧放置在BarButtonItem中。希望这有所帮助。


6
你可以这样隐藏它:
self.navigationItem.leftBarButtonItem = nil

您可以像这样添加一个新的左侧按钮:

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Button", style: .Plain, target: self, action: #selector(ViewController.buttonTapped))

希望这可以帮助到您,
干杯

在那种情况下,我需要移除并添加工具栏按钮。我知道这样可以实现,但我正在寻找更好的方法。顺便说一句,谢谢。 - AbaEesa
尝试一下我的答案,看看它是否适用于leftBarButtonItem和rightBarButtonItem:https://dev59.com/questions/13A75IYBdhLWcg3w6Ndj#22617176 - Mike Taverne
阿布·伊萨,"更好"的意思是什么? - user3182143
@AbuEesa 我不知道你所说的“更好的东西”是什么。祝你好运。 - Pedro Peres

4

Swift 3.1 | 功能强大,可用于隐藏我的rightBarButton

  // viewDidLoad 
  self.rightBarButtonAlert.isEnabled = false
  self.rightBarButtonAlert.tintColor = .clear

之前:

输入图像描述

之后:

输入图像描述


1
  for (UIBarButtonItem *item in self.navigationItem.rightBarButtonItems) {
        item.width = -50;
        item.enabled = false;
    }

问题是关于隐藏元素的,你的答案并没有隐藏它,只是使其失效了。明白吗? - Sanoj Kashyap
不要认为你的声誉比我更重要..你可以说出荒谬的话 - Giang
啊,但是通过设置左/右导航隐藏,UIBarBtn并没有被隐藏...这是另一种隐藏栏按钮的方法。 - Giang
如果你不尝试,就无法匆忙得出结论。 - Giang
对我来说很有意义,我会检查并再次评论。 - Sanoj Kashyap
显示剩余2条评论

0

在Swift中隐藏barButtonItem

barbuttonItem1.isEnabled = false barbuttonItem1.tintColor = UIColor.clear


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接