Swift - Как вызвать Selector() для метода с аргументами?

Я изучаю Swift и мне нужно вызвать мой метод при нажатии, вот код:

var gestureRecognizer = UITapGestureRecognizer()
myView.addGestureRecognizer(gestureRecognizer)
gestureRecognizer.addTarget(self, action: Selector(dismiss(nil)))

Это возвращает ошибку - Could not find an overload for init that accepts the supplied arguments

Я также пробовал как Selector("dismiss:nil") и Selector("dismiss(nil)") не повезло..

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

func dismiss(completion: (() -> Void)!) {
    self.dismissViewControllerAnimated(true, completion: completion)
}
+13
источник поделиться
2 ответа

Просто используйте имя метода как строку:

gestureRecognizer.addTarget(self, action: "dismiss:")

Изменить: в Swift 3.0 вам придется использовать следующий синтаксис:

gestureRecognizer.addTarget(self, action: #selector(dismiss(_:)))
+17
источник

Вы не передаете аргументы в селекторах. Вы только представляете, что есть один с двоеточием. Кроме того, вам не нужно использовать тип Selector вообще. Если вы передадите строковый литерал, он преобразуется в Селектор для вас.

gestureRecognizer.addTarget(self, action:"dismiss:")
+7
источник

Посмотрите другие вопросы по меткам или Задайте вопрос