将多个参数传递给手势识别器

时间:2015-11-25 14:40:09

标签: ios swift uitableview

我正在使用UITableView。 每个单元格都有一系列UIImageViews,它们的url被保存到一个数组中。 当我点击某个图像时,我的手势识别器的选择器应该同时获得图像的标记和单元格的indexPath.row

我目前正在从sender参数中获取图像标记,这就是我尝试获取索引路径的方式:

let point = sender.locationInView(self.tableView)
let indexPathRow = self.tableView.indexPathForRowAtPoint(point)?.row

然而,这看起来并没有给我正确的排。 有没有一种简单的方法可以将这两个参数传递给我的手势选择器?感谢。

2 个答案:

答案 0 :(得分:2)

您可以将您正在使用的手势识别器子类化,并添加所需的额外变量。示例如下。

class CustomGestureRecognizer : UITapGestureRecognizer {

    var url : NSURL?
    // any more custom variables here

    init(target: AnyObject?, action: Selector, url : NSURL) {
        super.init(target: target, action: action)

        self.url = url
    }

}

然后当你想要把网址拿回来时。

func didTap(sender : CustomGestureRecognizer) {
    print(sender.url)
}

答案 1 :(得分:0)

我认为最简单的方法是将UIImageView子类化为保存NSIndexPath:

files:
    "/opt/elasticbeanstalk/tasks/taillogs.d/nginx.conf" :
      mode: "000644"
      owner: root
      group: root
      content: |
        /var/log/nginx/*.log

commands:
    rm_old_conf:
      command: "rm nginx.conf.bak"
      cwd: "/opt/elasticbeanstalk/tasks/taillogs.d/"
      ignoreErrors: true

然后获取indexPath:

class MyImageView: UIImageView {
    var indexpath:NSIndexPath!
}