Ответ 1
Просто используйте имя метода как строку:
gestureRecognizer.addTarget(self, action: "dismiss:")
Изменить: в Swift 3.0 вам придется использовать следующий синтаксис:
gestureRecognizer.addTarget(self, action: #selector(dismiss(_:)))
Я изучаю 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)
}
Просто используйте имя метода как строку:
gestureRecognizer.addTarget(self, action: "dismiss:")
Изменить: в Swift 3.0 вам придется использовать следующий синтаксис:
gestureRecognizer.addTarget(self, action: #selector(dismiss(_:)))
Вы не передаете аргументы в селекторах. Вы только представляете, что есть один с двоеточием. Кроме того, вам не нужно использовать тип Selector вообще. Если вы передадите строковый литерал, он преобразуется в Селектор для вас.
gestureRecognizer.addTarget(self, action:"dismiss:")