web-dev-qa-db-ja.com

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)
}
_
15
Kosmetika

メソッドの名前を文字列として使用するだけです。

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

編集:Swift 3.0では、次の構文を使用する必要があります。

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

セレクターで引数を渡しません。あなたはコロンがあるものがあることを表すだけです。さらに、セレクタタイプを使用する必要はまったくありません。文字列リテラルを渡すと、それはセレクターに変換されます。

gestureRecognizer.addTarget(self, action:"dismiss:")
8
Mick MacCallum