我正在爲測試項目創建一個示例播放器。我創建了一個NSNotification來調用一個函數來播放數組中的下一個音軌。問題是通知連續調用這個函數8次?我不知道爲什麼會發生這種情況。這是我的代碼,並感謝您的幫助!NSNotification被更多次發射?
let player = AVPlayer()
var urlPlayerItems = [String]()
var currentTrack: Int = 0
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Checks to see if player reached end
NotificationCenter.default.addObserver(self,
selector: #selector(PlayerViewController.autoplayNextTrack(notification:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: player.currentItem)
}
func playTrack() {
if urlPlayerItems.count > 0 {
let newMovieURL = URL(string: urlPlayerItems[currentTrack])!
asset = AVURLAsset(url: newMovieURL, options: nil)
player.play()
}
}
func autoplayNextTrack(notefication: NSNotification) {
if (currentTrack + 1) >= urlPlayerItems.count {
currentTrack = 0
} else {
currentTrack += 1
}
playTrack()
}
嘗試移動的addObserver到viewDidLoad中或將其刪除之前在viewWillDisappear –
我試過這個,但仍然無法正常工作。它仍然被調用多次,雖然當我從autoplayNextTrack中刪除代碼,只是把一個打印語句調用它一次? – user7097242
另外,當我評論playTrack()在autoplayNextTrack部門它不會多稱呼它一次 – user7097242