获取图像点击 UI table 查看单元格

Get image click inside UI table view cell

我尝试在我的 UIImageView 中添加手势识别器

 let rc = UITapGestureRecognizer(target: self, action: "foo:")
 rc.numberOfTapsRequired = 1
 rc.numberOfTouchesRequired = 1
 cell.bar.tag = indexPath.row
 cell.bar.addGestureRecognizer(rc)

但没有调用我的 foo 函数

func foo(sender: UIImageView! ) {
    self.performSegueWithIdentifier("VC", sender: sender)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if segue.identifier == "VC" {
        let vc = segue.destinationViewController as! VC
        vc.item = items[sender.tag]
    }
}

你可以改变

foo(recognizer: UITapGestureRecognizer) {

}

因此,正如我之前提到的,您的问题是 UIImageView 默认情况下 属性 userInteractionEnabled 设置为 false。您可以在故事板中更改它,或添加行 cell.bar.userInteractionEnabled = true.

接下来您的问题出在您的 foo: 方法实现中:您将发件人指定为 UIImageView!,但它应该是 UITapGestureRecognizer。这就是它崩溃的原因 - 它不能是 UIImageView,所以当它展开 (!) 时它是 nil

解决方案:将您的 foo 方法声明更改为 foo(recognizer: UITapGestureRecognizer)。如果您需要在此方法中访问您的 imageView,您可以使用以下代码:

if let imageView = recognizer.view as? UIImageView {
  ...
}

或使用新的 guard 关键字 (Swift 2.0)

guard let imageView = recognizer.view as? UIImageView
else { return }
...