2015-01-29 2 views
6

Я хочу изменить идентификатор UIBarButtonItem с кодами от «Воспроизвести» до «Пауза». Как я могу это сделать?Как использовать UIBarButtonSystemItem для изменения идентификатора UIBarButtonItem? (Swift)

Благодаря

+0

возможно дубликат [переключения между UIBarButtonSystemItemPlay и UIBarButtonSystemItemPause] (http://stackoverflow.com/questions/9068629/toggle-between-uibarbuttonsystemitemplay-and-uibarbuttonsystemi tempause) – rishi

+0

ho michar vu ahmed ?? –

+1

нет нет. Я спрашиваю о быстром. – Ahmed

ответ

14

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 вида * не получают один и тот же тег). Тогда вы могли бы Fx сделать так:

let navigationBar = (self.view.viewWithTag(-1) as UINavigationBar) 
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText" 
4

для элемента панели инструментов, здесь приведен пример кода.

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 


    } 

} 
+0

Нам не нужна ссылка на playPauseButton, если мы вводим элемент в toolBar. –

0

Я видел несколько потоков, и это единственный ответ, который на самом деле делает то, что я ищу. Единственная проблема, с которой я сталкиваюсь, заключается в том, что он перемещает элемент панели инструментов в крайнее левое положение, и я сосредоточен на нем. Если у вас есть кнопка по центру с помощью гибкого пробела, или если это не первая кнопка, просто изменить индекс, как это: toolbar.items![1] = playPauseButton //apply for second toolbar item

0

Этот код проверен и работает с 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 
} 
4

Я использую этот код для переключения в режим редактирования

@IBAction func editMode(sender: AnyObject) { 
    self.setEditing(!self.editing, animated: true) 
    let newButton = UIBarButtonItem(barButtonSystemItem: (self.editing) ? .Done : .Edit, target: self, action: #selector(editMode(_:))) 
    self.navigationItem.setLeftBarButtonItem(newButton, animated: true) 
} 
Смежные вопросы