swift - AVAudioplayer no resetting on viewDidAppear -


the idea simple , not think question has been asked in past. want build simple mp3 player.

  • some songs displayed in collection view user selects song
  • segue view options play, pause or stop issue when go home screen select new song current still playing. impossible deactivate current player. when need play 2 songs, 2 playing together

i have tried lot of things - create new instance of player (player = avaudioplayer()) - player.pause() , player.play() not see doing wrong really.

this code :

import uikit import avfoundation

class lecteurviewcontroller: uiviewcontroller {

var chansonselected: chanson? = nil var lecteur:avaudioplayer = avaudioplayer() var timer1 = timer() var timer2 = timer() @iboutlet weak var dureechansonslider: uislider! @iboutlet weak var chansonimageview: uiimageview! @iboutlet weak var chansonvolumeslider: uislider! @iboutlet weak var debutlabel: uilabel! @iboutlet weak var finlabel: uilabel!  @ibaction func stopmusicaction(_ sender: uibarbuttonitem) {     var player = avaudioplayer()     lecteur.stop()     lecteurmanager.isactive = false }  @ibaction func pausemusicaction(_ sender: uibarbuttonitem) {     var player = avaudioplayer()     lecteur.pause()     lecteurmanager.isactive = false }  @ibaction func jouermusicaction(_ sender: uibutton) {      if lecteurmanager.isactive {         changesong()         print("lecteur déjà en cours")     } else {         var player = avaudioplayer()         lecteur.play()     }      print(lecteurmanager.isactive )     lecteurmanager.isactive = true }  func changesong() {     lecteur.stop()     //lecteur = avaudioplayer()      jouerlecteurmp3()     print(chansonselected!)     lecteur.play() }    override func viewdidload() {     super.viewdidload()     configureview() }  override func viewdidappear(_ animated: bool) {     super.viewdidappear(animated)     jouerlecteurmp3() }  func configureview() {      self.title = (chansonselected!.titre!).capitalized     chansonimageview.image = uiimage(named: "\(chansonselected!.image).jpgs")      //formatter 'back' button     let backbtn = uibarbuttonitem(title: "< playlist", style: .plain, target: self, action: #selector(lecteurviewcontroller.reset(_sender:)))      self.navigationitem.leftbarbuttonitem = backbtn     self.navigationcontroller?.navigationbar.tintcolor = uicolor.white      //contrôler volume chanson     chansonvolumeslider.addtarget(self, action: #selector(lecteurviewcontroller.ajustervolume(_ :)), for: uicontrolevents.valuechanged)      //contrôler durée chanson     dureechansonslider.addtarget(self, action: #selector(lecteurviewcontroller.ajusterdurée(_ :)), for: uicontrolevents.valuechanged)      updateui() }  func updateui() {     //indiquer position chanson     timer1 = timer.scheduledtimer(timeinterval: 1, target: self, selector: #selector(lecteurviewcontroller.mettreajourdurée), userinfo: nil, repeats: true)      //afficher durée chanson     timer2 = timer.scheduledtimer(timeinterval: 1, target: self, selector: #selector(lecteurviewcontroller.afficherdurée), userinfo: nil, repeats: true) }  func reset(_sender:uibarbuttonitem) {     self.navigationcontroller?.popviewcontroller(animated: true) }  func ajustervolume(_ sender:uislider) {     //print("volume ajusté \(chansonvolumeslider.value)")     lecteur.volume = chansonvolumeslider.value }  func ajusterdurée(_ sender:uislider) {     lecteur.currenttime = timeinterval(dureechansonslider.value) }  func mettreajourdurée() {     dureechansonslider.value = float(lecteur.currenttime) }  func afficherdurée() {     print("durée actuelle: \(lecteur.duration - lecteur.currenttime)")     debutlabel.text = retournerpositionactuelle()     finlabel.text = retournerdureetotal()  }  func retournerpositionactuelle() -> string {     let seconds = int(lecteur.currenttime) % 60     let minutes = (int(lecteur.currenttime) / 60) % 60      return string(format: "%0.2i:%0.2i", minutes, seconds) }  func retournerdureetotal() -> string {     let seconds = int(lecteur.currenttime) % 60     let minutes = (int(lecteur.currenttime) / 60) % 60     return string(format: "%0.2i:%0.2i", minutes, seconds) }  func jouerlecteurmp3() {     let chanson = "bensound-\(chansonselected!.titre!)"     let fichiermp3 = bundle.main.path(forresource: chanson, oftype: "mp3")      {         try lecteur = avaudioplayer(contentsof: url(string: fichiermp3!)!)         dureechansonslider.maximumvalue = float(lecteur.duration)      } catch {         print("erreur lecture mp3")     } } 

}


Comments

Popular posts from this blog

resizing Telegram inline keyboard -

command line - How can a Python program background itself? -

php - "cURL error 28: Resolving timed out" on Wordpress on Azure App Service on Linux -