2015-12-01 2 views
0
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() 


} 

}SKView! найдено ноль при представлении

После того как я играть видео на «MyClass» (класс выше)

Я тогда удалить представление и представить свою 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 
} 

}

Моя Initial Проблема в том, что, когда я представляю класс 'GameViewController1' Я получаю ошибку:

fatal error: unexpectedly found nil while unwrapping an Optional value 
    (lldb) 

на этой линии:

if skView.scene == nil { 

Так что это говорит мне, что мой SKView! это nil, что, как вы можете видеть по моему if, является тем, что я искал в любом случае.

Самая странная часть этого вопроса заключается в том, что, когда я пропускаю «MyClass» и сначала указываю точку входа в StoryBoard на GameViewContoller1, весь код воспроизводится правильно.

Связано ли с этим AVPlayer()? Логически мой код должен работать, но по какой-то неизвестной причине .. это не так. любая помощь будет чрезвычайно оценена.

+0

Может попробовать добавить 'уаг сцены: GameScene' 'под @IBOutlet! '... –

+0

Стоит сделать снимок, но, к сожалению, он возвратил сцену как ноль – Bliitzkr3ig

+0

Как насчет [этого] (https://gist.github.com/anonymous/d6632c344e1277952bdf), тот же результат? ... –

ответ

0

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 или один из способов просмотра, в противном случае вы получите сообщение об ошибке «Ожидаемая декларация»

Смежные вопросы