Я создаю простую игру как часть моих усилий по изучению Swift. В конце раунда я использовал UIGestureRecognizer
, чтобы очистить модальный/hudview, который при очистке также очищает игровое поле. Я хотел бы назвать функцию clearBoard(recognizer: UITapGestureRecognizer)
в функции restart()
, но не может из-за необходимости аргумента UITapGestureRecognizer
для clearBoard()
.Функция вызова с и без UIGestureRecognizer
Как использовать функцию clearBoard
как с распознавателем жестов, так и внутри функции restart
? Упрощенный код:
class GameViewController: UIViewController {
// Setup views etc.
func endGame() {
let tapRec = UITapGestureRecognizer()
if winner == 1 {
self.playerScore++
self.playerScoreLabel.text = String(self.playerScore)
let hudView: HudView = HudView.hudInView(self.view, message: "Player won!", animated: true)
tapRec.addTarget(self.view, action: "clearBoard")
self.view.addGestureRecognizer(tapRec)
} else {
self.computerScore++
self.computerScoreLabel.text = String(self.computerScore)
let hudView: HudView = HudView.hudInView(self.view, message: "Computer won!", animated: true)
}
}
func restart() {
// Restart
// Problem here
self.clearBoard()
}
func clearBoard(recognizer: UITapGestureRecognizer) {
// Clear board
}
}
Спасибо. У меня должна быть другая проблема. Я продолжаю получать «2015-02-25 17: 29: 28.602 SwiftTacToe [11122: 2757435] *** Завершение приложения из-за неперехваченного исключения« NSInvalidArgumentException », причина: '- [UIView clearBoard]: непризнанный селектор, отправленный в экземпляр 0x17419e5e0' error – Ja5onHoffman
Это означает, что у вас есть IBOutlet в вашей раскадровке, которую вы больше не имеете в своем коде. Просто нажмите на viewcontroller, а затем в правом столбце в правой стрелке. Затем, где вы видите «!», Удалите выход из списка. – Christian