【发布时间】:2015-12-01 04:06:22
【问题描述】:
class MyClass: UIViewController {
var playerViewController = AVPlayerViewController()
var playerView = AVPlayer()
var playerTimer = NSTimer()
override func viewDidAppear(animated:Bool) {
super.viewDidAppear(true)
presentViewController(GameViewController1(), animated: false, completion: nil)
let fileURL = NSURL(fileURLWithPath: "SomeFile.mp4")
playerView = AVPlayer(URL: fileURL)
playerViewController.player = playerView
self.presentViewController(playerViewController, animated: false){
self.playerViewController.showsPlaybackControls = false
self.playerViewController.player?.play()
self.playerTimer = NSTimer.scheduledTimerWithTimeInterval(4.2, target: self, selector:Selector("stopAfter4seconds:"), userInfo: nil, repeats: false)
}
}
func stopAfter4seconds(timer: NSTimer){
playerViewController.player = nil
playerViewController.removeFromParentViewController()
playerTimer.invalidate()
playerViewController.presentViewController(GameViewController1(), animated: false, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
在我在“MyClass”(上面的班级)上播放视频后
然后,我删除视图并展示具有 GameScene 的 GameContollerView1。
(下面的类)
class GameViewController1: UIViewController, ADBannerViewDelegate {
@IBOutlet var skView: SKView!
override func viewDidLoad() {
super.viewDidLoad()
if skView.scene == nil {
let scene = GameScene(size: skView.bounds.size)
skView.presentScene(scene)
}
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return UIInterfaceOrientationMask.AllButUpsideDown
} else {
return UIInterfaceOrientationMask.All
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
我最初的问题是,当我展示“GameViewController1”类时,我得到了错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
在这一行:
if skView.scene == nil {
所以它告诉我我的 SKView!是 nil,正如你在我的 if 语句中看到的那样,这就是我一直在寻找的东西。
最奇怪的是,当我跳过“MyClass”并将我的 StoryBoard 入口点首先指向 GameViewContoller1 时,所有代码都可以正常播放。
AVPlayer() 与此有关吗?从逻辑上讲,我的代码应该可以工作,但由于某些未知原因……它不是。任何帮助将不胜感激。
【问题讨论】:
-
也许尝试在
@IBOutlet下面添加var scene: GameScene!... -
值得一试,但不幸的是它返回的场景也为零
-
this 怎么样,同样的结果? ...
-
nada,也感谢您的快速回复。我很确定这与我呈现 GameViewController1 的方式有关,因为“MyClass”中的 AVPlayerViewController 非常棘手,所以我认为我做的不对
标签: ios xcode swift view skview