swift - 在 UIToolbar 上切换 UIBarButtonItem

标签 swift uibarbuttonitem uitoolbar

我想向 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/

相关文章:

ios - 当我在 swift iOS 中垂直滚动时,Tableview 单元格数据正在发生变化

json - 快速播放列表播放选定的歌曲

ios - 有没有办法保证 iOS 应用程序关闭时某些代码的运行?

ios - UIBarbuttonItem 在 ios 7 上没有标题

iOS 7 弹出窗口覆盖进度条和 uibarbuttonItem 色调颜色

ios - 在哪里找到 UIToolBar 的 "back"三角形按钮?

swift - 我如何将字典作为函数参数传递?

ios - UIBarButtonItem - 使其在仅文本时不可点击

cocoa-touch - 设置 UINavigationController 的 Toolbar 项

iphone - UIToolBar 不绘制在 iPhone 屏幕底部