Cześć chłopaki mam problem z UIPAGEVIEWController i powiadomienia.

Mam stronę UIPAAGEVewController z szeregiem stron, więc na tych stronach mam AvPlayer grający w pętli jako płci:

 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()
    }
}

Problem polega na tym, kiedy zmienam stronę za pomocą przewijania powiadomień z innych stron zmień mój aktualny film AvPlayer. Umieściłem druk wewnątrz powiadomienia i widzę dzwonienie do powiadomień innych stron. Nie wiem, co muszę zrobić?

Próbowałem usunąć powiadomienie w Viewdiddisapear przy użyciu NotificationCenter.default.removeobserver (ja), ale nie działał.

Możesz mi pomóc?

Dzięki

2
Allan Braga 15 luty 2017, 17:47

2 odpowiedzi

Najlepsza odpowiedź

Możesz po prostu zrobić kontrolę, gdy otrzymano powiadomienie.

Sprawdź, czy obiekt powiadomień jako AVPlayerItem jest taki sam jak widoczne widoki odtwarzacz playerItem, videoPlayer.currentItem

Lub po prostu sprawdź, czy AVPlayerItem w powiadomieniu jest taki sam jak yourCustomView.playerItem

EDYTOWAĆ:

Widzę, że twój obiekt jest zerowy, powinien być AvPlayeriTem. Sprawdź ten wątek.

2
Community 23 maj 2017, 12:34

NotificationCenter.default.removeObserver(self) nie działa tutaj, ponieważ nigdy nie dodałeś siebie jako celu.

Zamiast tego zachowaj odniesienie do Twojej powiadomienia i usuń go. Myślę, że powinien wyglądać coś takiego:

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)
}
10
James P 15 luty 2017, 16:45