Я хочу изменить идентификатор UIBarButtonItem с кодами от «Воспроизвести» до «Пауза». Как я могу это сделать?Как использовать UIBarButtonSystemItem для изменения идентификатора UIBarButtonItem? (Swift)
Благодаря
Я хочу изменить идентификатор UIBarButtonItem с кодами от «Воспроизвести» до «Пауза». Как я могу это сделать?Как использовать UIBarButtonSystemItem для изменения идентификатора UIBarButtonItem? (Swift)
Благодаря
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"
для элемента панели инструментов, здесь приведен пример кода.
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
}
}
Нам не нужна ссылка на playPauseButton, если мы вводим элемент в toolBar. –
Я видел несколько потоков, и это единственный ответ, который на самом деле делает то, что я ищу. Единственная проблема, с которой я сталкиваюсь, заключается в том, что он перемещает элемент панели инструментов в крайнее левое положение, и я сосредоточен на нем. Если у вас есть кнопка по центру с помощью гибкого пробела, или если это не первая кнопка, просто изменить индекс, как это: 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: 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)
}
возможно дубликат [переключения между UIBarButtonSystemItemPlay и UIBarButtonSystemItemPause] (http://stackoverflow.com/questions/9068629/toggle-between-uibarbuttonsystemitemplay-and-uibarbuttonsystemi tempause) – rishi
ho michar vu ahmed ?? –
нет нет. Я спрашиваю о быстром. – Ahmed