Change icon button in tableView

I have an audio player in the tableView that works with the help of a button. The question is: how to change the icon of a button when you click on it. I tried to make it many days but everything is without effect

class TableViewControllerAudioList: UIView,UITableViewDelegate,UITableViewDataSource {

  @IBOutlet weak var tableView: UITableView!

   var player:AVAudioPlayer!



   override func setNeedsDisplay() {
     super.setNeedsDisplay()

   }



 func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
   return 1
}

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
    return modalsF.count
 }


  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCellAudioList


cell.name.text = modalsF[indexPath.row].AudioName
cell.duration.text = "00:00"
cell.number.text = "\(indexPath.row + 1)"


cell.tapAction = { (cell) in

    self.player = self.setupAudioPlayerWithFile(file: "https:stmegi.com" + modalsF[indexPath.row].UrlName! as NSString, type: "mp3")
    self.player.prepareToPlay()
    self.player.play()
}


 return cell
}



 func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer?  {

let url = URL(string: file as String)
var audioPlayer:AVAudioPlayer?

do {
    let data = try Data(contentsOf: url!)
    audioPlayer = try AVAudioPlayer(data: data)
    audioPlayer?.prepareToPlay()
    audioPlayer?.play()

} catch let error as NSError{

    print(error.localizedDescription)

}

return audioPlayer
}

TableViewCell:

class TableViewCellAudioList: UITableViewCell {

@IBOutlet weak var number: UILabel!
@IBOutlet weak var name: UILabel! 
@IBOutlet weak var duration: UILabel!
@IBOutlet weak var playChange: UIButton!



var tapAction: ((UITableViewCell) -> Void)?
@IBAction func playAudio(_ sender: Any) {
    tapAction?(self)

 }

}

1 answer

  • answered 2017-06-17 18:52 Roman M.

    Try to play with button.setImage(yourIcon, forState: .normal). Do it in a button's function or in tableView(:didSelectRowAt:)