问题描述
我最近可能使用avplayer开发了一个音乐播放器流应用程序。情况是,我有一个带有自动播放功能的歌曲列表的表格视图,其中,首先,用户需要从表格视图中选择歌曲,只要当前歌曲结束,表格视图就会自动滚动并突出显示到下一个单元格。这是我在AVPlayerItemDidplayToEndTime
委托函数中的操作方式:
let indexPosition = IndexPath(row: MusicPlayerManager.shared.latestIndex,section: 0)
self.tableView.scrollToRow(at: indexPosition,at: .none,animated: true)
self.tableView.selectRow(at: indexPosition,animated: true,scrollPosition: .none)
其中MusicPlayerManager.shared.latestIndex
是当前单元格索引。一切都可以正常运行。
为供您参考,我已将AVPlayer声明为全局变量(单音),以允许音乐在任何页面(视图控制器)中播放,如下所示:
final class MusicPlayerManager {
static let shared = MusicPlayerManager()
private init() { }
var player: AVPlayer!
var latestIndex = 0
var playlistFrame = Playlist()
}
所有操作仍然正常,在这里我可以暂停,停止,播放,自动播放和其他功能。
当前正在播放歌曲时会发生这种情况和问题,然后我导航到其他 ViewControllers ,然后回到我的 MusicViewController (主vc),然后自动滚动并突出显示(选择行)不再起作用。播放器仍然照常运行,没有问题。仅在表视图上的问题MusicViewController是我的主视图控制器,其中所有的表视图和音乐播放器都在那里。如果我停留在MusicViewController页面上而没有导航到其他控制器,则一切正常。
要使自动滚动工作,我需要重新开始流程,在此流程中,我需要从表格视图中选择音乐列表。
- 我使用segue导航到其他页面,每次我回到MusicViewController页面时,都会调用viewdidload() 我将所有列表音乐加载到viewdidload()中的tableview中。已经尝试在viewdid内部显示,但仍然无法正常工作
- 对不起,我英语不好。因为英语不是我的母语。谢谢
我需要至少了解这种行为的原因。我尝试使用按钮手动执行功能scrollToRow
和selectRow
,它很好用。只是无法自动在代码上工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)