Voglio cambiare l'identificatore di un UIBarButtonItem con i codici da "Riproduci" a "Pausa". Come lo posso fare?Come utilizzare UIBarButtonSystemItem per modificare l'identificatore di UIBarButtonItem? (Swift)
Grazie
Voglio cambiare l'identificatore di un UIBarButtonItem con i codici da "Riproduci" a "Pausa". Come lo posso fare?Come utilizzare UIBarButtonSystemItem per modificare l'identificatore di UIBarButtonItem? (Swift)
Grazie
1) init un nuovo pulsante
//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) Basta cambiare il testo:
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
Se stai avendo anche problemi di accesso della barra di navigazione si è probabilmente è meglio impostare solo alcuni tag (mi piace usare tag negativi per specifiche Views * per assicurarmi che 2 viste * non abbiano lo stesso tag). Poi si potrebbe fx fare in questo modo:
let navigationBar = (self.view.viewWithTag(-1) as UINavigationBar)
navigationBar.topItem?.leftBarButtonItem?.title = "AnyText"
Per una voce di barra degli strumenti, ecco il codice di esempio.
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
}
}
Non abbiamo bisogno del riferimento di uscita playPauseButton se abbiamo inserito l'elemento nella barra degli strumenti. –
Ho visto molti thread e questa è l'unica risposta che fa effettivamente quello che sto cercando. L'unico problema che ho è che sposta la mia barra degli strumenti all'estrema sinistra, e l'ho centrato. Se avete il vostro tasto centrato con una barra di spazio flessibile, o se non è il primo pulsante, basta cambiare l'indice in questo modo: toolbar.items![1] = playPauseButton //apply for second toolbar item
Questo codice è testato e di lavoro con 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
}
io uso questo codice per passare alla modalità 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)
}
possibile duplicato del [Alterna tra UIBarButtonSystemItemPlay e UIBarButtonSystemItemPause] (http://stackoverflow.com/questions/9068629/toggle-between-uibarbuttonsystemitemplay-and-uibarbuttonsystemi tempause) – rishi
ho michar vu ahmed ?? –
no non lo è. Sto chiedendo di swift. – Ahmed