呜呜!呈现时发现为零


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()

}

}

在我播放"我的班级"(上面的班级(上的视频后

然后,我删除视图并呈现我的GameContollerView1,其中包含GameScene。
(以下等级(

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!是零,正如你从我的if语句中看到的那样,无论如何,这就是我一直在寻找的。

最奇怪的部分是,当我跳过"MyClass"并首先将我的故事板入口点指向GameViewContoller1时,所有代码都可以正确播放。

AVPlayer(( 与此有关吗?从逻辑上讲,我的代码应该可以工作,但由于某种未知的原因。不是。任何帮助将不胜感激。

OP 答:最终返回到 AppDelegate 并从那里调用 GameViewController1 类。花了一点时间弄清楚,但这是为我做的整体代码:

let gameScene = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("GameViewController1") as UIViewController
    let appDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
    appDelegate.window?.rootViewController = gameScene

我将这段代码输入到ViewDidDisappear中,以使我的AVplayer消失并加载一个新的视图:).你不知道这花了我多尴

尬的时间。

提示:请确保将其放入某种ViewDidLoad或视图方法之一中,否则将收到错误"预期声明">

最新更新