2016-04-28 64 views
0

我有一个代码如何将数字传递给手势识别器操作?

var i = 0 
for answer in answeres{ 
    let singleTap = UITapGestureRecognizer(target: self, action:#selector(tapDetected(_:)) 
    imageView.addGestureRecognizer(singleTap) 
    i+=1 
} 

func tapDetected(position : Int) { 
    print(position) 
} 

如何传递了var“我”给每个ImageView的,所以当用户点击ImageView的,它打印在日志中正确的号码?

+0

[上按钮动作传递参数:@selector]的可能的复制(http://stackoverflow.com/questions/3716633/passing-parameters-on-button -actionselector) – Laffen

回答

2

由识别器调用的方法是通过识别作为第一个参数:

func tapDetected(sender: UITapGestureRecognizer) {} 

这意味着你可以使用识别器的view属性来访问与它相关的视图。和数量可以被存储为视图标记:

var i = 0 
for answer in answers { 
    let singleTap = … 
    let imageView = … 
    imageView.addGestureRecognizer(singleTap) 
    imageView.tag = i 
    i = i + 1 
} 

func tapDetected(sender: UITapGestureRecognizer) { 
    print(sender.view.tag) 
} 
+0

完美!我正在看这个! 但如果我想传递一个对象的func? –

+0

函数不能使用视图标签在某处获取对象吗? – zoul

+0

是的,它可以。非常感谢 –