web-dev-qa-db-ja.com

UIBarButtonSystemItemを使用してUIBarButtonItem識別子を変更する方法(迅速)

コード付きのUIBarButtonItemの識別子を「Play」から「Pause」に変更したい。どうやってやるの?

ありがとう

9
Ahmed

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"
17

このコードを使用して編集モードを切り替えます

@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)
}
8
Paulo Bruckmann

ツールバー項目のサンプルコードは次のとおりです。

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


    }

}
4
Arda Ç.

このコードはテスト済みであり、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
}
1
Naishta

私はいくつかのスレッドを見てみましたが、これが実際に私が探していることを行う唯一の答えです。私が抱えている唯一の問題は、ツールバー項目が左端に移動し、中央に配置されることです。ボタンがフレキシブルスペースバーの中央にある場合、またはボタンが最初のボタンでない場合は、次のようにインデックスを変更します。toolbar.items![1] = playPauseButton //apply for second toolbar item

0
PopUhler