Chcę zmienić identyfikator UIBarButtonItem z kodami z "Play" na "Pause". Jak mogę to zrobić?Jak używać UIBarButtonSystemItem do zmiany identyfikatora UIBarButtonItem? (Swift)
Dzięki
Chcę zmienić identyfikator UIBarButtonItem z kodami z "Play" na "Pause". Jak mogę to zrobić?Jak używać UIBarButtonSystemItem do zmiany identyfikatora UIBarButtonItem? (Swift)
Dzięki
1) init, nowy przycisk
//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) Wystarczy zmienić tekst:
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
Jeśli również problemy z dostępem do paska nawigacji to chyba najlepiej po prostu ustawić jakiś znacznik (lubię używać znaczników ujemnych dla określonych widoków *, aby upewnić się, że 2 widoki * nie mają tego samego znacznika). Następnie można fx zrobić tak:
let navigationBar = (self.view.viewWithTag(-1) as UINavigationBar)
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
dla elementu paska narzędzi, oto przykładowy kod.
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
}
}
Nie potrzebujemy odniesienia do playPauseButton, jeśli wprowadzimy element do paska narzędzi. –
Widziałem kilka wątków i jest to jedyna odpowiedź, która faktycznie robi to, czego szukam. Jedyny problem jaki mam to to, że przesuwa mój element paska narzędzi w skrajnie lewą stronę i mam go wyśrodkowany. Jeśli masz przycisk wyśrodkowany z elastycznego spacji, lub jeśli nie jest to pierwszy przycisk, wystarczy zmienić indeks takiego: toolbar.items![1] = playPauseButton //apply for second toolbar item
Ten kod został przetestowany i pracy z 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
}
używać tego kodu, aby przełączać się na tryb EDIT
@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)
}
możliwe duplikat [przełączania między UIBarButtonSystemItemPlay i UIBarButtonSystemItemPause] (http://stackoverflow.com/questions/9068629/toggle-between-uibarbuttonsystemitemplay-and-uibarbuttonsystemi tempause) – rishi
ho michar vu ahmed ?? –
nie, nie jest. Pytam o szybki. – Ahmed