Я добавляю UIView
программно в SKScene
. В этом UIView
У меня есть кнопка, которая должна запускать команду в SKScene
. Как мне это сделать? Мой код генерирует исключение. Или, может быть, это просто не чистое программирование?Добавление цели в UIButton для супервизора
class LevelAchievedView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.opaque = false
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func drawRect(rect: CGRect) {
let replayButton = UIButton()
replayButton.setTitle("Replay?", forState: UIControlState.Normal)
replayButton.setTitleColor(UIColor.greenColor(), forState: UIControlState.Normal)
replayButton.titleLabel!.font = UIFont(name: "HelveticaNeue-Light", size: 30)
replayButton.addTarget(self.superview, action: "returnToStart", forControlEvents: .TouchUpInside)
replayButton.frame.origin = CGPointMake(10, 10)
self.addSubview(replayButton)
}
Кажется, я Мессинг replayButton.addTarget(self.superview...
, и я предполагаю, что я не могу использовать self.superview в этом случае, хотя у меня есть func returnToStart()
в SKScene. Что мне не хватает?
Исключение брошено:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SKView returnToStart]: unrecognized selector sent to instance 0x7ff10980fc00'
Я думаю, что вы создали 'returnToStart' в своем классе' SKScene'. Но 'self.superview' не является' SKScene', просто потому, что 'SKScene' не является подклассом' UIView'. Ваш код попытается выполнить 'returnToStart' в' UIView', полученный 'didMoveToView (view: UIView)'. Также не то, что 'returnToStart'! =' ReturnToStart: '. – Sony
Да, я создал returnToStart в классе SKScene. Могу ли я получить доступ к функциям SKScene из UIView? – Pete
Я опубликовал решение. – Sony