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)
编辑:删除强制解包和固定启用值.
对于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)
第一种方式:
只是设置.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)
| 归档时间: |
|
| 查看次数: |
30143 次 |
| 最近记录: |