【发布时间】:2021-03-11 07:54:08
【问题描述】:
当我从屏幕返回并再次进入屏幕时,nextTrackCommand 的目标被多次调用,即使我删除了viewWillDisappear 中的目标。我做错了什么?
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.beginReceivingRemoteControlEvents()
MPRemoteCommandCenter.shared().nextTrackCommand.addTarget { [unowned self] (_) -> MPRemoteCommandHandlerStatus in
print("go to next track")
return .success
}
}
override func viewWillDisappear(_ animated: Bool) {
MPRemoteCommandCenter.shared().nextTrackCommand.removeTarget(self)
}
【问题讨论】:
-
请注意,
viewWillDisappear并不一定意味着 VC 生命的终结。 VC消失后可能会再次出现。当视图重新出现时,您当前的代码将导致目标保持删除状态。不知道是不是故意的…… -
@Sweeper 是的,谢谢。我把它移到
viewDidDisappear -
viewDidDisappear在这里无济于事。 @Sweeper 想在您不从CurrentVC回来但您要继续使用NextVC时帮助您解决这个问题。在这种情况下,viewWillDisappear/viewDidDisappear将为CurrentVC触发,并且将被取消订阅。为了解决这个问题,您可以将您的addTarget订阅从viewDidLoad移动到viewWillAppear。 -
@Legonaftik 是的,我正在使用 viewDidDisappear 和 viewDidAppear
-
@SwiftiSwift 不,你不是。您正在使用
viewDidDisappear和viewDidLoad。这些不是一对。
标签: ios swift xcode swift5 mpremotecommandcenter