Я создаю Tableview, внутри которого находится Tableviewcell, а в ячейке есть метка и кнопка звука.Для каждого ярлыка есть звук при нажатии кнопки.Когда я нажимаю в первый раз на btn1, звучит звук, и изображение кнопки меняется на «пауза», когда я нажимаю снова, тот же звук кнопки останавливается, и изображение меняется на «воспроизведение», и это прекрасно работает, но когда я нажимаю для первоговремя на одной кнопке, допустим, btn1 и, не нажимая его снова (остановка звука), я нажимаю на btn2, звук btn1 останавливается, и изображение btn1 или btn2 изменяется.Я хочу, чтобы при нажатии на кнопки 2,3 или 4 предыдущий звук прекратился, изображение предыдущей кнопки (означает, что все кнопки, кроме текущей) должно измениться на «воспроизведение», а текущая нажатая кнопка должна измениться на «пауза»и звук предыдущего щелчка должен прекратиться, и текущий нажатый должен воспроизвести.
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var titleLable: UILabel!
@IBOutlet weak var sound: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
}
class ViewController: UIViewController , UITableViewDataSource , UITableViewDelegate , GADInterstitialDelegate {
var countsNumberOfButtonClicks = 0
var countsNumberOfInfoBtnClicks = 0
var isFirstTime = false
var player : AVAudioPlayer! = nil
var titleAlert: String!
@IBOutlet weak var myTableView: UITableView!
var toggleState = 1
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell.
{
let myCell = self.myTableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as! TableViewCell
myCell.titleLable.text = self.Duck[indexPath.row]
myCell.sound.tag = indexPath.row
myCell.sound.addTarget(self, action: #selector(self.playSound), forControlEvents: .TouchUpInside)
return myCell
}
@IBAction func playSound(sender: UIButton) {
if toggleState == 1 {
let fullName: String = self.Duck[sender.tag]
let fullNameArr = fullName.componentsSeparatedByString(" ")
let path = NSBundle.mainBundle().pathForResource(fullNameArr[0], ofType:"wav", inDirectory: "sounds")
let fileURL = NSURL(fileURLWithPath: path!)
do {
player = try AVAudioPlayer(contentsOfURL: fileURL)
player.prepareToPlay()
} catch {
print("Problem in getting File")
}
player.play()
sender.setImage(UIImage(named: "pause.png"), forState: UIControlState.Normal)
print("toggle state 1")
toggleState = 2
}
else {
player.pause()
toggleState = 1
sender.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)
print("Toggle state else")
}
Результат симулятора