Я добавил аудиоплеер в UITableView, используя https://github.com/jorgenhenrichsen/SwiftAudio этой библиотеки. Плеер работает нормально, но у меня возникла проблема с изменением изображения кнопки паузы воспроизведения в UITableView.
В этой библиотеке есть метод, который дает состояние звука (воспроизведение, готовность, буфер, сбой):
func setPlayButtonState(forAudioPlayerState state: AudioPlayerState) ()
Этот метод работает нормально и изменяет изображение кнопки при воспроизведении звука при добавлении в View Controller. Но я должен управлять состоянием в UITableViewCell.
Примерно так:
Для изменения изображения кнопки ячейки я использовал этот метод:
func setPlayButtonState(forAudioPlayerState state: AudioPlayerState) () {
let cell = YOUR_TABLEVIEW_REF.cellForRow(at: IndexPath(row: YOUR_ROW_FOR_LANGUAGE_CELL, section: YOUR_SECTION_FOR_LANGUAGE_CELL)) as! AppSettingViewCell
cell.playButton.image = UIImage(named: "IMAGE NAME")
}
Работает для одного индекса. Но то, что мне нужно сделать, это изменить его, чтобы снова остановить состояние при нажатии какой-либо другой строки.
и мой метод настройки ячейки:
func configurePlaylistCell (tableView: UITableView, cell: PlaylistCell, controller: AudioController, indexPath: IndexPath){
cell.playPauseButton.tag = indexPath.row + 100
cell.playButtonPressed = { [weak self] (sender: UIButton) in
self?.indexPathForCell = IndexPath(row: sender.tag - 100 , section: 0)
if !controller.audioSessionController.audioSessionIsActive {
try? controller.audioSessionController.activateSession()
}
print (controller.player.currentIndex)
if let item = controller.player.currentItem {
if (indexPath.row == 0) {
try? controller.player.load(item: item, playWhenReady: true)
}else {
try? controller.player.jumpToItem(atIndex: sender.tag - 100, playWhenReady: true)
}
}
else {
controller.player.togglePlaying()
}
}
}