将参数传递给swift中的#selector方法

Vin*_*nod 5 uitapgesturerecognizer swift swift2

我想在单击图像时将多个参数传递给函数.这是我的代码

var param1 = 120
var param2 = "hello"
var param3 =  "world"

let image: UIImage = UIImage(named: "imageName")!
 bgImage = UIImageView(image: image)

let singleTap = UITapGestureRecognizer(target: self, action:#selector(WelcomeViewController.tapDetected(_:secondParam:thirdParam:)))
singleTap.numberOfTapsRequired = 1
bgImage!.userInteractionEnabled = true
bgImage!.addGestureRecognizer(singleTap)
Run Code Online (Sandbox Code Playgroud)

调用功能

func tapDetected(firstParam: Int, secondParam: String, thirdParam: String) {
print("Single Tap on imageview")
            print(firstParam)  //print 120
            print(secondParam) // print hello
            print(thirdParam) /print world
        }
Run Code Online (Sandbox Code Playgroud)

如何传递参数以便我能获得正确的值?

Sha*_* Of 2

在 swift2 中,你不能在操作中传递参数。您可以只使用类属性:

var param1 = 120
var param2 = "hello"
var param3 = "world"
let image: UIImage = UIImage(named: "imageName")!
var bgImage: UIImageView?

override func viewDidLoad() {
    super.viewDidLoad()

    bgImage = UIImageView(image: image)
    let singleTap = UITapGestureRecognizer(target: self, action: #selector(WelcomeViewController.tapDetected))
    singleTap.numberOfTapsRequired = 1
    bgImage!.userInteractionEnabled = true
    bgImage!.addGestureRecognizer(singleTap)
}
Run Code Online (Sandbox Code Playgroud)

调用函数

func tapDetected() {
    print("Single Tap on imageview")
    print(param1) // print 120
    print(param2) // print hello
    print(param3) // print world
} 
Run Code Online (Sandbox Code Playgroud)