gpt4 book ai didi

ios - 如何在单击下一个按钮时播放下一首歌曲

转载 作者:行者123 更新时间:2023-11-29 05:25:34 26 4
gpt4 key购买 nike

我正在使用 AVAudioPlayer() 创建音乐播放器,因此我有多个 JSON 格式的音频文件网址,因此我已在 tableview 中显示所有内容,然后在 didSelect 上显示 我正在播放选定的歌曲,但我想在按钮上播放下一首歌曲,单击此处是我在 didSelect

上播放歌曲的代码

did选择代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let urlstring = songs[indexPath.row]
let strnew = urlstring.replacingOccurrences(of: "\"", with: "")
downloadFileFromURL(url: strnew)
}

这是我从 URL 下载音频的函数

func downloadFileFromURL(url: String)  {

if let audioUrl = URL(string: url) {

let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!

let destinationUrl = documentsDirectoryURL.appendingPathComponent(audioUrl.lastPathComponent)
print(destinationUrl)

if FileManager.default.fileExists(atPath: destinationUrl.path) {
print("The file already exists at path")
self.play(url: destinationUrl)
} else {
URLSession.shared.downloadTask(with: audioUrl, completionHandler: { (location, response, error) -> Void in
guard let location = location, error == nil else { return }
do {
try FileManager.default.moveItem(at: location, to: destinationUrl)

self.play(url: destinationUrl)
print("File moved to documents folder")
} catch let error as NSError {
print(error.localizedDescription)
}
}).resume()
}
}
}

使用下面的代码我正在播放音频

func play(url: URL) {

print("playing \(url)")

do {

audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer.prepareToPlay()
audioPlayer.volume = 1.0
audioPlayer.play()

} catch let error as NSError {

print("playing error: \(error.localizedDescription)")

} catch {

print("AVAudioPlayer init failed")
}
}

但我无法理解如何在单击下一个按钮时播放下一首歌曲我在下面分享我的用户界面的屏幕截图

Here is the screenshot please check

didSelect 上,我可以播放所选歌曲,但如何管理下一首歌曲,我不确定,请帮助我。

最佳答案

在ViewController中只维护一个索引值。

喜欢:

var currentIndex = 0

在didSelect方法中用indexPath行值更新当前索引值

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
currentIndex = indexPath.row
loadUrl()
}

使用另一种方法来获取 URL 并播放歌曲。将会

func loadUrl(){
let urlstring = songs[currentIndex]
let strnew = urlstring.replacingOccurrences(of: "\"", with: "")
downloadFileFromURL(url: strnew)
}

对于上一个/下一个按钮操作将是

@IBAction func nextBtnAction(_ sender: UIButton){
if currentIndex + 1 < songs.count {
currentIndex = currentIndex + 1
loadUrl()
}
}

@IBAction func previousBtnAction(_ sender: UIButton){
if currentIndex != 0 {
currentIndex = currentIndex - 1
loadUrl()
}
}

希望您能理解。

关于ios - 如何在单击下一个按钮时播放下一首歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58217110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com