2016-11-04 8 views
-1

私は速いアプリケーションでいくつかのビデオを再生する必要があります。ビデオは完璧に動作していますが、ビデオが終了した時点を検出したいと思います。私がそれについて調べたところ、NotificationCenterがその解決策であることが判明しました。このコードを使用しましたが、ビデオの最後にアプリケーションがクラッシュします。スイフト:ビデオの終了を検出

これは私のコードです:

func playVideo(url: NSURL){ 
let player = AVPlayer(url: url as URL) 

     NotificationCenter.default.addObserver(self, selector: Selector(("playerDidFinishPlaying")), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem) 
player.play() 
} 

func playerDidFinishPlaying(note: NSNotification) { 
     print("Video Finished") 
    } 

エラーは次のとおりです。

[myApp.myViewController playerDidFinishPlaying]: unrecognized selector sent to instance 0x79669740 

任意のヘルプしてください?

+0

詳細をお知らせください。 –

+0

'url:NSURL'や' func playerDidFinishPlaying(注: 'Swift 2.のようなコードです。Swift 3にコードを書く必要があります。今すぐSwift 2とSwift 3が混在しています。 – matt

答えて

1

セレクタが間違っているため、明らかです。

Selector(("playerDidFinishPlaying")) 

これはあなたのメソッドのObjective-C名ではありません。

明らかに、メソッドのObjective-C名の作成方法がわかりません。そして、あなたはする必要はありません!これはまさに#selectorの構文が解決するものです。ただそれを使用してください:

#selector(playerDidFinishPlaying) 

スウィフトはあなたが解決する方法を知らない問題を解決するので、今、それは動作します。

+0

私は答えました – matt

+0

これはうまくいきました。私は速いバージョンと構文にもっと注意を払わなければならないと信じています。もう一度、あなたは最高です! –

+1

'#selector'構文が何をしているのか理解したいのであれば、私の本を読んでください:http://www.apeth.com/swiftBook/ch02.html#_selectors – matt

関連する問題