Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 如何使用UIBarButtonSystemItem更改UIBarButtonItem标识符?(Swift)_Xcode_Swift_Uibarbuttonitem - Fatal编程技术网

Xcode 如何使用UIBarButtonSystemItem更改UIBarButtonItem标识符?(Swift)

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

我想用代码将一个uibarbuttonite的标识符从“Play”改为“Pause”。我该怎么做

谢谢你(打开一个新按钮

//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出口引用。