@IBOutlet weak var playStopButton: UIBarButtonItem!
var playStopArray = [UIBarButtonSystemItem.Pause, UIBarButtonSystemItem.Play]
var index = 0
@IBOutlet weak var image: UIImageView!
@IBAction func playButton(sender: UIBarButtonItem) {
println("pressed")
playStopButton = UIBarButtonItem(barButtonSystemItem: playStopArray[index], target: self, action: "startMusic:")
println("here")
if index == 0 {
index = 1
}
else {
index = 0
}
}
func startMusic() {
println("test")
}
I expected the bar button to change to the pause symbol, but with no luck. It prints both "pressed" and "here" but "test" does not work. Why is the image not changing?
Your approach is wrong.
In the following line,
playStopButton = UIBarButtonItem(barButtonSystemItem: playStopArray[index], target: self, action: "startMusic:")
you are actually creating a new instance of
UIBarButtonItem
. This button is not actually added into the view. Instead of adding theUIBarButtonItem
through Interface Builder. You can create it programmatically.Read this question for more information. toggle between UIBarButtonSystemItemPlay and UIBarButtonSystemItemPause
Here is my approach in Swift
visit http://www.raywenderlich.com/36475/how-to-make-a-music-visualizer-in-ios or you can check out my Github https://github.com/Charles-Hsu/MusicVisualizer