【发布时间】:2019-06-30 04:08:09
【问题描述】:
我想将带有代码的 UIBarButtonItem 的标识符从“播放”更改为“暂停”。我该怎么做?
谢谢
【问题讨论】:
-
ho michar vu ahmed??
-
不,不是。我问的是 swift。
标签: xcode swift uibarbuttonitem
我想将带有代码的 UIBarButtonItem 的标识符从“播放”更改为“暂停”。我该怎么做?
谢谢
【问题讨论】:
标签: xcode swift uibarbuttonitem
1) 初始化一个新按钮
//change to play
let button = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "someAction")
navigationBar.topItem.leftBarButtonItem = button
//change to pause
let button = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "someOtherAction")
navigationBar.topItem.leftBarButtonItem = button
2) 只需更改文本:
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
如果您在访问导航栏时也遇到问题,最好只为其设置一些标签(我喜欢对特定视图*使用否定标签,以确保 2 个视图*不会获得相同的标签) . 然后你可以这样做:
let navigationBar = (self.view.viewWithTag(-1) as UINavigationBar)
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
【讨论】:
我用这段代码来切换编辑模式
@IBAction func editMode(sender: UIBarButtonItem) {
self.setEditing(!self.isEditing, animated: true)
let newButton = UIBarButtonItem(barButtonSystemItem: (self.isEditing) ? .done : .edit, target: self, action: #selector(editMode(sender:)))
self.navigationItem.setLeftBarButton(newButton, animated: true)
}
【讨论】:
对于工具栏项,这里是示例代码。
var player:AVAudioPlayer = AVAudioPlayer()
@IBOutlet var toolbar: UIToolbar!
@IBOutlet var playPauseButton: UIBarButtonItem!
@IBAction func playPause(sender: AnyObject) {
if player.playing {
player.pause()
playPauseButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "playPause:")
toolbar.items![0] = playPauseButton //apply for first toolbar item
} else {
player.play()
playPauseButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "playPause:")
toolbar.items![0] = playPauseButton //apply for first toolbar item
}
}
【讨论】:
此代码已经过测试,可与 Swift 2 一起使用
@IBOutlet weak var navigationBar: UINavigationBar!
//playToPause()
@IBAction func playButton(sender: UIBarButtonItem) {
let newBarButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "pauseButton:")
navigationBar.topItem?.rightBarButtonItem = newBarButton
}
// pauseToPlay()
@IBAction func pauseButton(sender: UIBarButtonItem){
let pauseBtnItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "playButton:")
navigationBar.topItem!.rightBarButtonItem = pauseBtnItem
}
【讨论】:
我看到了几个线程,这是唯一真正符合我要求的答案。我唯一的问题是它把我的工具栏项目移到了最左边,而且我把它放在了中心。如果您的按钮以灵活的空格键居中,或者它不是第一个按钮,只需像这样更改索引:
toolbar.items![1] = playPauseButton //apply for second toolbar item
【讨论】: