在UIPageViewController中删除循环AVPlayer Observer

All*_*aga 2 mobile xcode ios swift

嗨,大家好我有UIPageViewController和通知的问题.

我有一个带有一系列页面的页面UIPageVewController,所以在这些页面中我有一个循环播放的AV播放器如下:

 func loopVideo(videoPlayer:AVPlayer){
    NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil, queue: nil){
        [weak videoPlayer] notification in
        videoPlayer?.seek(to: kCMTimeZero)
        videoPlayer?.play()
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用滚动更改页面时,来自其他页面的通知会更改当前播放AVPlayer的视频.我在通知中放了一个打印件,我可以看到调用其他页面的通知.我不知道自己要做什么?

我尝试使用NotificationCenter.default.removeObserver(self)删除viewDidDisappear中的通知但是不起作用.

你能帮助我吗?

谢谢

Jam*_*s P 8

NotificationCenter.default.removeObserver(self) 因为你从未将自己添加为目标,所以不会在这里工作.

而是保留对您的通知的引用并将其删除.我认为应该看起来像这样:

var notificationObserver:NSObjectProtocol?

func loopVideo(videoPlayer:AVPlayer){
    self.notificationObserver = NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil, queue: nil){
        [weak videoPlayer] notification in
        videoPlayer?.seek(to: kCMTimeZero)
        videoPlayer?.play()
    }
}

func removeObserver() {
    NotificationCenter.default.removeObserver(self.notificationObserver)
}
Run Code Online (Sandbox Code Playgroud)