首页 > 解决方案 > 一个带有按钮的 ViewController 中的多个音频文件

问题描述

想同时播放多个音频文件ViewController。当用户点击应该加载到Button1和当用户点击播放相同应该播放和应该加载和播放。file1.mp3ViewControllerbutton2 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
 }

标签: iosswiftavaudioplayerswift5

解决方案


您可以使用 Tableview 列出所有歌曲名称和播放按钮用于在一个视图控制器中使用多个音频文件

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)
}
}

推荐阅读