【发布时间】:2021-11-04 13:08:23
【问题描述】:
所以我有一个 UITableViewController,每个单元格内都有一个播放按钮和一个暂停按钮,以便播放音乐。当您按下播放按钮时,它应该播放特定于该单元格的音乐,但是当我运行我的代码时,它会播放随机音频,而不是我专门为它加载的音频。此外,当我滚动浏览 tableview 时,音频停止播放。为什么会这样,我该如何解决?如果按下不同单元格中的播放按钮,我还希望它切换歌曲。
这是我用来加载唯一字符串(由post.mp3 生成)以在我的 AVPlayer 中查找 url 文件的函数:
func loadAudio(post: CompPost, completion: @escaping (URL) -> ())
{
let audioRef = Storage.storage().reference().child("cPosts").child(post.uid).child("Audio").child(post.mp3)
audioRef.downloadURL
{ (url, error) in
print("mp3filename: " + post.mp3)
guard error == nil else
{
print(error!.localizedDescription)
return /**alert**/
}
self.audioPlayer = AVPlayer(playerItem: AVPlayerItem(url: url!))
completion(url!)
}
}
这是为每个单元格加载唯一 url 的代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cPostCell", for: indexPath) as! cPostCell
cell.delegate = self
cell.index = indexPath
//other code omitted for brevity
loadAudio(post: compPosts[indexPath.row])
{ (url) in
print("THIS IS THE URL")
print(url)
}
return cell
}
点击播放按钮的功能:
func playMusic(index: Int)
{
audioPlayer.play()
isPlaying = true
print("playing now")
}
【问题讨论】:
标签: ios swift firebase uitableview avplayer