[英]How to stop currently playing audio automatically when another play button in different UITableView cells are pressed? - Swift
I am a swift beginner currently working on my first iOS app.我是一名 swift 初学者,目前正在开发我的第一个 iOS 应用程序。
I have a TableViewController which has several cells and each cell contains a play button.我有一个 TableViewController,它有几个单元格,每个单元格都包含一个播放按钮。 When a few play buttons are pressed, a few different audios are played at the same time, but I would like to stop a currently playing audio when another playing play button is pressed.当按下几个播放按钮时,会同时播放几个不同的音频,但是当按下另一个正在播放的播放按钮时,我想停止当前正在播放的音频。
Here are the sample codes I created.这是我创建的示例代码。
Please give me an advice.请给我一个建议。 Thank you so much!太感谢了!
The problem is that every single cell has its own independent player.问题是每个细胞都有自己独立的玩家。 You want just one player, so that you can stop it and start a new sound.你只需要一个播放器,这样你就可以停止它并开始一个新的声音。 For example, make the one player a property of the view controller.例如,使一个玩家成为视图 controller 的属性。 Every cell can see it but there is just one.每个细胞都可以看到它,但只有一个。
create an extension for AVPlayer
because AVPlayer
does not own condition for playing.为AVPlayer
创建一个扩展,因为AVPlayer
不拥有播放条件。 extension given below.下面给出的扩展名。
extension AVPlayer {
var isPlaying: Bool {
return rate != 0 && error == nil
}
}
use it while tap on play like this.像这样点击播放时使用它。
if player?.isPlaying == true {
player?.pause()
player?.seek(to: CMTime(seconds: 0, preferredTimescale: 60))
}
//set up you audio file to player
player?.play()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.