我正在创建一个简单的游戏,作为学习 Swift 的一部分。在一轮结束时,我使用 UIGestureRecognizer 来清除模态/hudview,清除后也会清除游戏板。我也想在 restart()
函数中调用 clearBoard(recognizer: UITapGestureRecognizer)
函数,但由于 的必要性而无法调用
参数。clearBoard()
的 UITapGestureRecognizer
如何在手势识别器和 restart
函数中使用 clearBoard
函数?简化代码如下:
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
}
}
最佳答案
您不必将识别器设置为参数。这只是苹果为您提供的一种可能性。您也可以不传递这样的参数:
func clearBoard(){
//Clear board
}
它也可以与手势识别器一起使用。您不必更改手势代码中的任何内容:
tapRec.addTarget(self.view, action: "clearBoard")
那绝对没问题。
关于swift - 使用和不使用 UIGestureRecognizer 的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28729504/