Ios 带按钮的ViewController中有多个音频文件
要在同一Ios 带按钮的ViewController中有多个音频文件,ios,swift,avaudioplayer,swift5,Ios,Swift,Avaudioplayer,Swift5,要在同一ViewController中播放多个音频文件。当用户单击按钮1时,应将文件1.mp3加载到ViewController中,当用户单击play时,应播放相同的内容,对于按钮2文件2.mp3应加载并播放 我知道如何对单个文件执行此操作,但对于多个文件,我必须一次又一次地创建ViewController,这非常困难。这是我的单文件代码 @IBAction func buttonPressed(_ sender: UIButton) { if player.isPlaying {
ViewController
中播放多个音频文件。当用户单击按钮1
时,应将文件1.mp3
加载到ViewController
中,当用户单击play时,应播放相同的内容,对于按钮2文件2.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
}
您可以使用Tableview列出所有歌曲名称和播放按钮用于在一个viewcontroller中使用多个音频文件
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)
}
}