2017-01-28 2 views
0

Zugriff Ich habe eine UIVieweine UIView von SKScene

@IBOutlet weak var whiteBox: UIView!

in meiner UIViewController Klasse. Gibt es eine Möglichkeit, von meiner SKScene-Klasse darauf zuzugreifen?

+0

Ist die Szene in einem 'SKView'? Wenn ja, wie ist die Beziehung zwischen dem 'SKView' und dem View-Controller? Befindet sich die 'SKView' in der View-Hierarchie des View-Controllers oder außerhalb davon? –

Antwort

0

Im SKScene fügen diese initializers (unter der Annahme, dass Ihr UIViewControllerGameViewController genannt wird)

var viewController: GameViewController 
init(size: CGSize, parent: GameViewController) { 
    self.viewController = parent 
    super.init(size: size) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

Und in Ihrem GameViewController ersetzen Sie den aktuellen GameScene initializer mit diesem (unter der Annahme, dass Ihr SKSceneGameScene genannt wird)

let scene = GameScene(size: (self.view?.bounds.size)!, parent: self) 

Um auf die UIView zuzugreifen, verwenden Sie diese:

viewController.whiteBox 

Hoffe, das hilft!

+0

Zunächst einmal, vielen Dank für die Hilfe! –

+0

für den 'self.viewController = parent' Teil, bekomme ich eine Fehlermeldung "Wert des Typs GameScene hat kein Mitglied 'viewController'", eine Möglichkeit, das zu beheben? –

+0

Fügen Sie einfach diese Zeile 'var viewController: GameViewContoller' –

Verwandte Themen