Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make a UIBarButtonItem disappear using swift IOS

I have an IBOutlet that I have linked to from the storyboard

@IBOutlet var creeLigueBouton: UIBarButtonItem!

and I want to make it disappear if a condition is true

if(condition == true)
{
    // Make it disappear
}
like image 298
Clément Bisaillon Avatar asked Aug 25 '14 18:08

Clément Bisaillon


2 Answers

Use the property enabled and tintColor

    let barButtonItem:UIBarButtonItem? = nil

    if isHidden{
        barButtonItem?.enabled      = false
        barButtonItem?.tintColor    = UIColor.clearColor()
    }else{
        barButtonItem?.enabled      = true
        barButtonItem?.tintColor    = nil
    }
like image 80
haiLong Avatar answered Oct 17 '22 02:10

haiLong


Do you really want to hide/show creeLigueBouton? It is instead much easier to enable/disable your UIBarButtonItems. You would do this with a few lines:

if(condition == true) {
    creeLigueBouton.enabled = false
} else {
    creeLigueBouton.enabled = true
}

This code can even be rewritten in a shorter way:

creeLigueBouton.enabled = !creeLigueBouton.enabled

Let's see it in a UIViewController subclass:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var creeLigueBouton: UIBarButtonItem!

    @IBAction func hide(sender: AnyObject) {
        creeLigueBouton.enabled = !creeLigueBouton.enabled
    }

}

If you really want to show/hide creeLigueBouton, you can use the following code:

import UIKit

class ViewController: UIViewController {

    var condition: Bool = true
    var creeLigueBouton: UIBarButtonItem! //Don't create an IBOutlet

    @IBAction func hide(sender: AnyObject) {
        if(condition == true) {
            navigationItem.rightBarButtonItems = []
            condition = false
        } else {
            navigationItem.rightBarButtonItems = [creeLigueBouton]
            condition = true
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        creeLigueBouton = UIBarButtonItem(title: "Creer", style: UIBarButtonItemStyle.Plain, target: self, action: "creerButtonMethod")
        navigationItem.rightBarButtonItems = [creeLigueBouton]
    }

    func creerButtonMethod() {
        print("Bonjour")
    }

}
like image 40
Imanou Petit Avatar answered Oct 17 '22 03:10

Imanou Petit