Xcode 如何使用UIBarButtonSystemItem更改UIBarButtonItem标识符?(Swift)
我想用代码将一个uibarbuttonite的标识符从“Play”改为“Pause”。我该怎么做 谢谢你(打开一个新按钮Xcode 如何使用UIBarButtonSystemItem更改UIBarButtonItem标识符?(Swift),xcode,swift,uibarbuttonitem,Xcode,Swift,Uibarbuttonitem,我想用代码将一个uibarbuttonite的标识符从“Play”改为“Pause”。我该怎么做 谢谢你(打开一个新按钮 //change to play let button = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "someAction") navigationBar.topItem.leftBarButtonItem = button //change
//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"
如果访问导航栏时遇到问题,最好只设置一些标记(我喜欢对特定视图使用负标记*以确保两个视图*没有相同的标记)。
然后你可以这样做:
let navigationBar = (self.view.viewWithTag(-1) as UINavigationBar)
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
对于工具栏项,以下是示例代码
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
}
}
我看了几个线程,这是唯一的答案,实际上做到了我所寻找的。我唯一的问题是,它将我的工具栏项移到最左边,而我将其居中。如果按钮以灵活的空格键居中,或者不是第一个按钮,只需按如下方式更改索引:
toolbar.items![1] =playPauseButton//apply for second 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
}
我使用此代码切换编辑模式
@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)
}
可能是ho michar vu ahmed的复制品??不,不是。我问的是swift。如果我们已经将项目注入工具栏,则不需要playPauseButton出口引用。