首页 > 解决方案 > 从表视图控制器引用特定的表视图单元格

问题描述

我有一个UITableView显示音频波形图像和播放按钮的单元格。当然,点击按钮会播放音频。为了减少内存使用,我AVAudioPlayer在表视图控制器中声明了一个实例。我定义了一个具有playAudio(url:URL)stopPlayingAudio()方法的协议,并且我的表视图控制器符合此协议。每当新单元格出列时,我都会将表格视图控制器分配为单元格的委托,以便当用户点击单元格 UI 中的播放按钮时,它会调用playAudio(url)委托方法。这似乎工作得很好,但我现在遇到了问题。

我正在计算音频播放时的完成百分比值,我想用这个值更新表格视图单元 UI,但我不确定如何从表格视图控制器引用正确的单元格。似乎被点击以开始音频播放的单元格如果滚动离开屏幕可能最终会被回收(除非我误解了单元格如何动态出队)。有没有办法做到这一点?

标签: iosswiftuitableviewavaudioplayer

解决方案


如果您知道要查找表格的哪一行,则可以向表格视图询问相应的单元格:

guard let cell = tableView.cellForRow(at: indexPath) as? WaveformCell {
    cell.fractionComplete = ...
}

推荐阅读