Несколько аудио файлов в одном ViewController с кнопкой - PullRequest
0 голосов
/ 24 января 2020

Хотите воспроизвести несколько аудиофайлов в одном ViewController. Когда пользователь нажимает на Button1, file1.mp3 должен быть загружен в ViewController, и когда пользователь нажимает play, он должен играть, а для button2 file2.mp3 должен загружаться и играть.

Я знаю, как это сделать для один файл, но для нескольких файлов я должен снова и снова создавать ViewController, что очень сложно. Это мой код для одного файла

 @IBAction func buttonPressed(_ sender: UIButton) {
    if player.isPlaying {

        player.stop()
        sender.setImage(UIImage(named:"play.png"),for: .normal)
    } else {
        player.delegate = self
        player.play()
         player.numberOfLoops = 107
        sender.setImage(UIImage(named:"pause.png"),for: .normal)
    }


 }


 do {
     let audioPlayer = Bundle.main.path(forResource: "chalisa", ofType: "mp3")
     try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPlayer!) as URL)
 }catch {
   //ERROR
 }

1 Ответ

0 голосов
/ 24 января 2020

Вы можете использовать Tableview. Список всех песен. Имя и кнопку Play для использования нескольких аудиофайлов в одном контроллере представления.

import AVFoundation

//MARK:- Variable Declaration
var player: AVAudioPlayer?    

func playMusic() {
     guard let url = Bundle.main.url(forResource: "chalisa", withExtension: "mp3") else { return }

do {
    try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)            
    try AVAudioSession.sharedInstance().setActive(true)


    player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

    /* iOS 10 and earlier require the following line:
    player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3) */

    guard let player = player else { return }

    player.play()

} catch let error {
    print(error.localizedDescription)
}
}
...