我的屏幕流程如下
登录 - >注册 - > CarDetails
以上所有3个屏幕都在导航控制器中,但不允许用户从Car-Details返回到注册。为实现这一目标,我已经
了override func viewWillAppear(animated: Bool)
{
self.navigationItem.setHidesBackButton(true, animated:true);
}
在CarDetails视图控制器中。所以它隐藏了后退按钮,如果控制器在导航控制器中,它会自动生成。
到目前为止一切都很好。
在主屏幕上提供所有详细用户登陆后,我将滑出菜单。从菜单用户也可以转到CarDetail屏幕(更新)。那个时候而不是backButton我需要滑出菜单按钮作为左栏按钮。所以我用故事板创建了它。
问题是它也会在注册视图后显示出来。我需要在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块。
答案 0 :(得分:11)
您可以通过禁用按钮&像那样改变它tintColor,
self.navigationItem.rightBarButtonItem?.isEnabled = false
self.navigationItem.rightBarButtonItem?.tintColor = UIColor.clear
向右或向左执行BarButtonItem。希望能帮助到你。
答案 1 :(得分:4)
self.navigationItem.leftBarButtonItem = nil
你可以像这样添加一个新的左键:
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Button", style: .Plain, target: self, action: #selector(ViewController.buttonTapped))
我希望有所帮助,
干杯
答案 2 :(得分:3)
Swift 3.1 |非常适合隐藏我的rightBarButton
// viewDidLoad
self.rightBarButtonAlert.isEnabled = false
self.rightBarButtonAlert.tintColor = .clear
在:
后:
答案 3 :(得分:1)
for (UIBarButtonItem *item in self.navigationItem.rightBarButtonItems) {
item.width = -50;
item.enabled = false;
}
答案 4 :(得分:0)
要快速隐藏barButtonItem
barbuttonItem1.isEnabled =否 barbuttonItem1.tintColor = UIColor.clear