我想向 UIToolbar
添加一个播放/暂停类型的按钮,但我不确定如何在代码中访问该按钮。我尝试为按钮添加一个 socket 并以这种方式更改它,但它并没有以这种方式更改,所以我显然没有正确地做。
@IBOutlet weak var playPauseButton: UIBarButtonItem!
func toggleButton() {
playPauseButton = UIBarButtonItem(barButtonSystemItem: .Stop, target: self, action: "stop:")
}
编辑:我想出的解决方案如下:
(感谢 wltrup 为我指明了正确的方向!)
var isActive = false
@IBOutlet weak var toolbar: UIToolbar!
@IBAction func playPauseButton(sender: AnyObject) {
if (!isActive) {
play()
swapPlayPauseButton(.Pause)
} else {
pause()
swapPlayPauseButton(.Play)
}
isActive = !isActive
}
func swapPlayPauseButton(barButtonSystemItem: UIBarButtonSystemItem) {
var items = [AnyObject](toolbar.items!)
items[2] = UIBarButtonItem(barButtonSystemItem: barButtonSystemItem, target: self, action: "playPauseButton:")
toolbar.setItems(items, animated: true)
}
或者,使用 wltrup 建议的属性观察器的解决方案:
var timer: NSTimer? {
didSet {
isActive = (timer != nil)
if timer == nil {
swapPlayPauseButton(.Play)
} else {
swapPlayPauseButton(.Pause)
}
}
}
@IBAction func playPauseButton(sender: AnyObject) {
if (!isActive) {
play()
} else {
pause()
}
}
func swapPlayPauseButton(barButtonSystemItem: UIBarButtonSystemItem) {
var items = [AnyObject](toolbar.items!)
items[2] = UIBarButtonItem(barButtonSystemItem: barButtonSystemItem, target: self, action: "playPauseButton:")
toolbar.setItems(items, animated: true)
}
最佳答案
您需要更新工具栏的 items
属性,直接更新(但不是动画)或使用 setItems:animated:
方法。查看 Configuring Toolbar Items 下的 UIToolbar
文档.
关于swift - 在 UIToolbar 上切换 UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688794/