Каков правильный синтаксис действий в swift 2?

У меня есть набор функций, как это:

  func alertControllerBackgroundTapped(myString: String) {
       ///do something in here
        })
    }

который я пытаюсь вызвать здесь:

 alert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action:#selector(CICViewController.alertControllerBackgroundTapped(_:))))

Но очевидно, что это даст мне ошибку, так как я не устанавливаю свои аргументы (myString) правильно.

Каков правильный синтаксис в этом?

большое спасибо

1 ответ

  1. Так как вы добавляете это действие UITapGestureRecognizer, действие должно иметь правильную подпись — функцию с одним аргументом, принимающую UITapGestureRecognizerи ничего не возвращающую. Внутри тела распознавателя вы можете сделать вызов функции, которая принимает строку:

    func handleTap(recognizer: UITapGestureRecognizer) {
        alertControllerBackgroundTapped("Hello!") 
    }
    

    Добавить handleTapкак действие вместо alertControllerBackgroundTapped:

    alert.view.superview?.addGestureRecognizer(
        UITapGestureRecognizer(
            target: self
        ,   action:#selector(CICViewController.handleTap(_:))
        )
    )