在 UIToolbar 上切换 UIBarButtonItem
Toggle UIBarButtonItem on UIToolbar
我想将 play/pause 类型的按钮添加到 UIToolbar
,但我不确定如何在代码中访问该按钮。我尝试为按钮添加一个插座并以这种方式更改它,但它并没有以这种方式更改,所以我显然做得不正确。
@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
的文档
我想将 play/pause 类型的按钮添加到 UIToolbar
,但我不确定如何在代码中访问该按钮。我尝试为按钮添加一个插座并以这种方式更改它,但它并没有以这种方式更改,所以我显然做得不正确。
@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
的文档