使用swift IOS使UIBarButtonItem消失

Clé*_*lon 34 uibarbuttonitem conditional-statements iboutlet swift

我有一个我从故事板链接到的IBOutlet

@IBOutlet var creeLigueBouton: UIBarButtonItem!
Run Code Online (Sandbox Code Playgroud)

如果条件成立,我想让它消失

if(condition == true)
{
    // Make it disappear
}
Run Code Online (Sandbox Code Playgroud)

小智 47

使用启用的属性和tintColor

    let barButtonItem:UIBarButtonItem? = nil

    if isHidden{
        barButtonItem?.enabled      = false
        barButtonItem?.tintColor    = UIColor.clearColor()
    }else{
        barButtonItem?.enabled      = true
        barButtonItem?.tintColor    = nil
    }
Run Code Online (Sandbox Code Playgroud)


Ima*_*tit 34

你真的想隐藏/表演creeLigueBouton吗?相反,启用/禁用UIBarButtonItems要容易得多.您可以使用以下几行来完成此操作:

if(condition == true) {
    creeLigueBouton.enabled = false
} else {
    creeLigueBouton.enabled = true
}
Run Code Online (Sandbox Code Playgroud)

这段代码甚至可以用更短的方式重写:

creeLigueBouton.enabled = !creeLigueBouton.enabled
Run Code Online (Sandbox Code Playgroud)

让我们在UIViewController子类中看到它:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var creeLigueBouton: UIBarButtonItem!

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

}
Run Code Online (Sandbox Code Playgroud)

如果您确实要显示/隐藏creeLigueBouton,可以使用以下代码:

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")
    }

}
Run Code Online (Sandbox Code Playgroud)


小智 12

// 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:删除强制解包和固定启用值.


Mus*_*ari 8

对于Swift 3

if (your_condition) {
  self.navigationItem.rightBarButtonItem = self.addAsset_btn
 }
else {
  // hide your button
  self.navigationItem.rightBarButtonItem = nil
 }
Run Code Online (Sandbox Code Playgroud)


He *_*何一非 5

第一种方式:

只是设置.title""

第二种方式:

updateToolBar()只要你想显示/隐藏它就可以打电话creeLigueBouton.

func updateToolBar() {
    var barItems: [UIBarButtonItem] = []

    if condition != true {
        // Make it appear
        barItems.append(creeLigueBouton)
    }

    barItems.append(anotherButton)

    myToolBar.setItems(barItems, animated: true)

    myToolBar.setNeedsLayout()
}
Run Code Online (Sandbox Code Playgroud)