Подтвердить что ты не робот

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)
}
4b9b3361

Ответ 1

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

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

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

gestureRecognizer.addTarget(self, action: #selector(dismiss(_:)))

Ответ 2

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

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