AJ Mayara
AJ Mayara

Reputation: 31

Play/Pause Audio Button Swift

I'm new to swift and can't seem to figure this out. I am trying to have one button act as both a play button which loops audio and as a pause button if clicked again. I've tried using an if/else statement but I keep getting this error "fatal error: unexpectedly found nil while unwrapping an Optional value"

The code works without the if/else statement, however, in that case it loops indefinitely without a way to pause it.

Any suggestions?

 var hihat16: AVAudioPlayer!

     @IBAction func hat16(_ sender: Any) {
        if hihat16.isPlaying == false {
    let path = Bundle.main.path(forResource: "Hat 017-1.aif", ofType:nil)!
    let url = URL(fileURLWithPath: path)

    do {
    let sound = try AVAudioPlayer(contentsOf: url)
    hihat16 = sound
    sound.play()
    hihat16.numberOfLoops = -1


    } catch {
    // couldn't load file :(
    }
        }else{ hihat16.stop()}

Picture of the code and error message : Picture of the code and error message

Upvotes: 3

Views: 2247

Answers (1)

Aaqib Hussain
Aaqib Hussain

Reputation: 838

Try this.

Do it in your viewDidLoad

let path = Bundle.main.path(forResource: "Hat 017-1.aif", ofType:nil)!
let url = URL(fileURLWithPath: path)
do {
hihat16 = try AVAudioPlayer(contentsOf: url)
hihat16.numberOfLoops = -1
} catch {}

Then in your @IBAction you can do this.

if !hihat16.isPlaying {
hithat16.play()
}
else{ hithat.stop()}

Upvotes: 4

Related Questions