我希望在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)。
答案 0 :(得分:0)
检查界面构建器或故事板中的imageView标签是否为0,将其设为101并重试..
您也可以查看
for subView in cell.contentView.subView {
print("subView tag --> \(subView.tag)!")
}
在你的cellForRowAtIndexPath中尝试这个
答案 1 :(得分:0)
尝试,
cell.viewWithTag(101)
或self.view.viewWithTag(101)
如果标记是唯一的(例如,如果您未在其他地方使用此标记)。
第二件事你必须添加gesture recognizer
来捕获事件。你怎么知道它返回零?它可能不会返回零。你又犯了一个错误。确保项目中no_image_available.jpg
正确可用!
另一件事是确保你已正确设置标签。
答案 2 :(得分: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
}