2015-09-09 2 views
1

В моем файле GameScene.swift у меня есть следующая переменная-член "selectedBall", которую я хочу назначить в другом файле с именем ChooseBall.swift.Назначение другой переменной из другого класса в @IBAction?

class GameScene: SKScene, SKPhysicsContactDelegate { 
    internal var chosenBall: BallType! 
} 

Файл My ChooseBall.swift выглядит следующим образом.

class ChooseBall: UIViewController { 
    @IBAction func chooseBeachBall(sender: UIButton) { 
     chosenBall = BallType.BeachBall 
    } 
} 

Я получаю ошибку компиляции, говоря:

Use of unresolved identifier 'chosenBall' 

Как я могу это исправить?

ответ

0

Я не использовал SpriteKit, поэтому я не знаю основ, где и когда создавать экземпляры.

Однако ошибка, которую вы получаете, связана с тем, что вы не создали экземпляр GameScene и сделали доступным с вашего контроллера.

Возможным решением может быть следующий код, но опять же, я не уверен, когда и где сцена должна быть создана.

class ChooseBall: UIViewController { 
    var scene = GameScene() 

    @IBAction func chooseBeachBall(sender: UIButton) { 
     scene.chosenBall = BallType.BeachBall 
    } 
} 
+0

Да, спасибо! Это правильная идея, но я понимаю, что мне нужен аргумент, который нужно передать в GameScene. Мне любопытно, что передать в этом случае, потому что в GameViewController.swift я вызвал его со следующим: let skView = посмотреть как! SKView scene = GameScene (размер: skView.bounds.size) Это, похоже, не работает в моем другом файле. –

+0

MVC - ваш проводник здесь. Класс игровой модели будет содержать choosenBall. Возможно, его один мяч для всех уровней игры или каждого уровня имеет свой собственный экземпляр мяча; без разницы. ChoosenBall UIViewController проходит через пользовательский выбор модели. Класс GameScene читает модель choosenBall и создает ее в пользовательском интерфейсе. –

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