У меня есть этот протокол, который я go включил для реализации в моем контроллере представления.
protocol GuessDelegate {
func userDidFinish(_controller:GuessInputViewController, guess:String)
}
Однако, когда я его вызываю, компилятор заставляет меня набрать _controller:
непосредственно перед self
(пожалуйста, смотрите ниже). Это не позволяет мне писать delegate.userDidFinish(self, guess: guessText)
и жалуется на отсутствующую метку аргумента, если я пытаюсь это сделать.
Однако подпись метода не имеет метки аргумента, только имя параметра controller
с начальным подчеркиванием, которое, как я думал, означало, что имя параметра поэтому не нужно вводить при вызове функции.
Что именно происходит? Может быть, он ведет себя так, потому что это метод протокола?
@IBAction func saveGuess(_ sender: AnyObject) {
if let delegate = delegate, let guessText = guessTextField.text {
delegate.userDidFinish(_controller: self, guess: guessText)
}
}