2016-05-04 17 views
6

関数のパラメータとして関数を取得し、これを#セレクタで設定したいとします。 しかし、私はエラーメッセージが表示されます:#selectorに関数を渡す

Argument of '#selector' cannot refer to a property 

私は、次の機能があります。これをどのように処理するかを

private func addGestureRecognizerToItem(selector:() ->()) { 
     let labelGesture = UITapGestureRecognizer(target: self, action: #selector(selector)) 
     let imageGesture = UITapGestureRecognizer(target: self, action: #selector(selector)) 
     label.addGestureRecognizer(labelGesture) 
     imageView.addGestureRecognizer(imageGesture) 
} 

任意のアイデア?

+0

、ターゲットは 'self'あるので、あなたはあなたにTHXの' UIGestureRecognizer' –

答えて

7

これはいかがですか?インポッシブル

class ViewController: UIViewController { 

let label = UILabel() 
let imageView = UIImageView() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    addGestureRecognizerToItem(#selector(test)) 
} 

func test() { 
} 

private func addGestureRecognizerToItem(selector: Selector) { 
    let labelGesture = UITapGestureRecognizer(target: self, action: selector) 
    let imageGesture = UITapGestureRecognizer(target: self, action: selector) 
    label.addGestureRecognizer(labelGesture) 
    imageView.addGestureRecognizer(imageGesture) 
} 

}

+0

Alotsにクロージャを渡すことはできません –

0

データを渡す最初の関数の戻り値から、目的の関数を呼び出すことはできません。 シナリオが要件に応じて変更されることがあります。