我正在尝试从命令中心控制音频播放。当选择播放文件时,每次从文件列表触发segue时,视频都会播放一个新实例。
配置命令中心控件的代码存在于播放器视图的viewDidLoad
函数中:
let audioSession = AVAudioSession.sharedInstance();
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback);
try AVAudioSession.sharedInstance().setActive(true);
} catch {}
UIApplication.shared.beginReceivingRemoteControlEvents();
TableViewController.commandCenter = MPRemoteCommandCenter.shared();
TableViewController.commandCenter!.togglePlayPauseCommand.isEnabled = true;
TableViewController.commandCenter!.togglePlayPauseCommand.addTarget(self, action: #selector(TableViewController.playbacker!.TogglePlayPause))
我第一次进入播放器视图时,控制中心命令完全正常。当我选择另一个文件进行播放并重新创建视图时,会出现问题。然后我被提出以下例外:
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' - [_ MPWeakInvocationTarget TogglePlayPause]:无法识别的选择器发送到实例0x170032340'
我尝试将MPRemoteCommandCenter
变量设为静态,播放器视图引用为静态,但结果是相同的。
有人可以告诉我为什么这不起作用吗?