2016-05-29 2 views
0

У меня есть функция установки, как это:Каков правильный синтаксис действий в swift 2?

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

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

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

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

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

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

ответ

0

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

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

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

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

Я хотел бы передать аргумент из внутри блока предупреждения, а не в handleTap func .... –

+0

@ GeorgeAsda Gisture распознаватель - это тот, который вызывает вашу функцию, поэтому вы не можете заставить его работать так, как из коробки. [Вот решение, которое пытается обойти это ограничение] (http://mookid.dk/oncode/archives/3815) (внизу статьи). – dasblinkenlight

+0

спасибо @dasblinkenlight это похоже на то, что я мог бы использовать .... –

Смежные вопросы