ios - Swift AVPlayerItem close when finished -
i'm extremely new swift , ios development, please forgive ignorance.
i'm trying have avplayer close automatically when video done playing. i've thought attach "playerdidfinishplaying" listener receive notification, once have it, can't find method/event close controller. i'm looking mimic action of clicking "done" button.
here small snippet of code. enough information. if not, can provide further info
let destination = segue.destinationviewcontroller as! avplayerviewcontroller let url = nsurl(string: "video url") destination.player = avplayer(url: url!) destination.player?.play() i've added following notification, again, i'm not sure once have it...
nsnotificationcenter.defaultcenter().addobserver(self, selector: "playerdidfinishplaying:", name: avplayeritemdidplaytoendtimenotification, object: destination.player!.currentitem) func playerdidfinishplaying(note:nsnotification){ print("finished") // close window/controller } lastly, know i'll need remove observer, i'm not sure when or so. appreciated.
in order "close" controller, should call dismissviewcontrolleranimated(true, completion: nil)
so code like:
nsnotificationcenter.defaultcenter().addobserver(self, selector: "playerdidfinishplaying:", name: avplayeritemdidplaytoendtimenotification, object: destination.player!.currentitem) func playerdidfinishplaying(note:nsnotification){ print("finished") dismissviewcontrolleranimated(true, completion: nil) } if viewcontroller inside of uinavigationcontroller stack, can do:
nsnotificationcenter.defaultcenter().addobserver(self, selector: "playerdidfinishplaying:", name: avplayeritemdidplaytoendtimenotification, object: destination.player!.currentitem) func playerdidfinishplaying(note:nsnotification){ print("finished") navigationcontroller?.popviewcontrolleranimated(true) } and remove observer, can within deinit{}:
deinit { nsnotificationcenter.defaultcenter().removeobserver(self) }
Comments
Post a Comment