0

我正在寻找在的第一条记录上捕获的图像点击事件UITableView,当用户点击我时,cell.imageAvtar我只想捕获该事件。

这是我正在使用的代码

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
                let cell = tableView.dequeueReusableCellWithIdentifier("details", forIndexPath: indexPath) as! AccountCell
                if (indexPath.row == 0) {
    (cell.contentView.viewWithTag(101) as! UIImageView).image = UIImage(named: "no_image_available.jpg")
    }
return cell
}

但是(cell.contentView.viewWithTag(101)正在返回nil。我也尝试(cell.contentView.viewWithTag(100)过 (cell.imageAvtar.viewWithTag(101) 。

4

3 回答 3

0

我已经使用IBOutlets了 vadian 和 jrturton 的建议。

这是工作代码

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("details", forIndexPath: indexPath) as! AccountCell
                if (indexPath.row == 0) {  let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
                cell.imageAvtar.userInteractionEnabled = true
                cell.imageAvtar.addGestureRecognizer(tapGestureRecognizer)
    }
    }
     func imageTapped(img: AnyObject)
        {
                 print("event captured")
                //your logic comes here
        }
于 2016-08-22T06:05:11.070 回答
0

检查界面生成器或情节提要中的 imageView 的标签,如果它为 0,则将其设置为 101 并重试..

你也可以检查

for subView in cell.contentView.subView {
    print("subView tag --> \(subView.tag)!")
}

在你的 cellForRowAtIndexPath 试试这个

于 2016-08-20T07:52:35.077 回答
0

尝试,

cell.viewWithTag(101)或者self.view.viewWithTag(101)如果标签是唯一的(即,如果您没有在其他地方使用此标签)。

您必须添加的第二件事是gesture recognizer在其上捕获事件。你怎么知道它返回 nil ?它可能不会返回零。你又犯了一个错误。确保它no_image_available.jpg在项目中正确可用!

另一件事是确保您已正确设置标签。

于 2016-08-20T07:54:09.200 回答