2015-01-20 53 views
1

在Swift中似乎没有dismissMoviePlayerViewControllerAnimated上的任何SO帖子,所以我想我会解决它。dismissMoviePlayerViewControllerAnimated在Swift中不工作

我有一个表格单元格,当您长按它时,它会显示一个视频。当视频结束时,我的目标是让用户回到桌面视图。最后一块是没有工作的那一点。

在这里的任何帮助将不胜感激。我已经通过Apple文档和一些关于Objective-C的文章进行了阅读。似乎答案是运行dismissMoviePlayerViewControllerAnimated,UIViewController上的方法,但它不工作。

import UIKit 
import MediaPlayer 

class ViewController: UIViewController { 
    var moviePlayer:MPMoviePlayerController! 

    @IBOutlet weak var longPressView: UIView! 
    let longPressRec = UILongPressGestureRecognizer() 

    func longPressedView() { 
     playVideo() 
    } 

    func videoHasFinishedPlaying(notification: NSNotification){ 
     println("Video finished playing") 

     self.dismissMoviePlayerViewControllerAnimated() 
     // not returning me to the ViewController 
    } 

    func playVideo() { 
     // get path and url of movie 
     let path = NSBundle.mainBundle().pathForResource("IMG_8602", ofType:"MOV") 
     let url = NSURL.fileURLWithPath(path!) 
     moviePlayer = MPMoviePlayerController(contentURL: url) 

     // construct the views 
     moviePlayer.view.frame = self.view.bounds 
     self.view.addSubview(moviePlayer.view) 
     moviePlayer.fullscreen = true 

     // remove controls at top and bottom of video 
     moviePlayer.controlStyle = MPMovieControlStyle.None 

     // add event observer for videoHasFinsihedPlaying 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "videoHasFinishedPlaying:", 
     name: MPMoviePlayerPlaybackDidFinishNotification, object: nil) 
    } 

override func viewDidLoad() { 
     super.viewDidLoad() 

     longPressRec.addTarget(self, action: "longPressedView") 
     longPressView.addGestureRecognizer(longPressRec) 
     longPressView.userInteractionEnabled = true 

     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

回答

1

因为你使用MPMoviePlayerController代替MPMoviePlayerViewController您的代码不起作用。

要调用:

self.dismissMoviePlayerViewControllerAnimated() 

但没有MPMoviePlayerViewController解雇。这就是为什么没有发生。

如果您更愿意使用MPMoviePlayerController(与您发布的代码相同),在手动添加view之后,您还必须手动删除它。

+1

感谢忍耐。我将所有'MPMoviePlayerController'改为'MPMoviePlayerViewController's。这还需要我调用'moviePlayer.movi​​ePlayer.controlStyle = MPMovieControlStyle.None'(注意双倍的'moviePlayer',第一个是var名称,第二个是'MPMoviePlayerViewController'上的方法 – 2015-01-20 22:00:18