所以,我试图实例化一个视图控制器。问题是,我正在尝试到实例化的视图是一个gameScene视图控制器(Sprite Kit)。此外,我从创建的观点也是一个gameScene视图。如果我从普通的UIViewController实例化,我会这样做:
let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("main")
self.showViewController(vc as! UIViewController, sender: vc)
//the view that I am instantiating's class name is "GameScene"
当我尝试运行此操作时,我收到两个错误:
gameScene does not have member named "storyboard"
'GameScene' does not have a member named 'showViewController'
有人可以解释为什么这不起作用,还请发布一个有效的解决方案吗?
提前非常感谢!
答案 0 :(得分:0)
这是因为游戏场景没有名为storyboard
或showViewController
的属性。这些是UIViewController
类的一部分。
。要在GameScene
中访问它们,您可以在GameScene中创建一个指向当前UIViewController
的属性。
class GameScene: SKScene {
var gameViewController : UIViewController!
}
您可以在GameViewController
类中分配属性。
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// Configure the view code
scene.gameViewController = self // Added line
skView.presentScene(scene)
}
}
然后你可以在GameScene
内使用它。
let vc : AnyObject! = self.gameViewController.storyboard!.instantiateViewControllerWithIdentifier("main")
self.gameViewController.showViewController(vc as! UIViewController, sender: vc)