2015-02-25 2 views
0

Я создаю простую игру как часть моих усилий по изучению 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 
    } 



} 

ответ

1

Вам не нужно устанавливать распознаватель в качестве параметра. Это только возможность, которую предлагает вам яблоко. Вы также не можете передавать такие параметры:

func clearBoard(){ 
    //Clear board 
} 

Он также будет работать с распознающим жестом. Вам не нужно ничего менять в вашем жестах-коде:

tapRec.addTarget(self.view, action: "clearBoard") 

Это абсолютно нормально.

+0

Спасибо. У меня должна быть другая проблема. Я продолжаю получать «2015-02-25 17: 29: 28.602 SwiftTacToe [11122: 2757435] *** Завершение приложения из-за неперехваченного исключения« NSInvalidArgumentException », причина: '- [UIView clearBoard]: непризнанный селектор, отправленный в экземпляр 0x17419e5e0' error – Ja5onHoffman

+0

Это означает, что у вас есть IBOutlet в вашей раскадровке, которую вы больше не имеете в своем коде. Просто нажмите на viewcontroller, а затем в правом столбце в правой стрелке. Затем, где вы видите «!», Удалите выход из списка. – Christian

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