Make a UIBarButtonItem disappear using swift IOS
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 }
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 UIKitclass 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 UIKitclass 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") }}
// Nice answer haiLong, I think as an extension this is more convenient.extension UIBarButtonItem { var isHidden: Bool { get { return !isEnabled && tintColor == .clear } set { tintColor = newValue ? .clear : nil isEnabled = !newValue } }}
EDIT: Removed forced unwrapping and fixed enabled value.