很多时候我们需要在Cell中点击他的子视图来干点不一样的操作,比如 点赞、评论、转发等按钮的操作,这时我们就需要对其子视图添加点击事件来实现(我也是个IOS菜鸟,这时我能想到的方法)。
第一步:我们需要在cellForRowAt方法中为Cell的子视图添加手势事件
这里我的子视图是UIImageView,添加手势事件的方法如下:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let row = indexPath.row
let model = mList[row]
let cell = tableView.dequeueReusableCell(withIdentifier: "myCarCell", for: indexPath) as! MyCarCell
cell.labelCarPlateNo.text = model.carPlateNo
cell.labelCarType.text = model.carTypeName
cell.labelCarVin.text = model.frameNo
cell.imgEditCar.tag = row
cell.imgDeleteCar.tag = row
cell.imgEditCar.isUserInteractionEnabled = true
cell.imgDeleteCar.isUserInteractionEnabled = true
cell.imgEditCar.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(editCar(_:))))
cell.imgDeleteCar.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(deleteCar(_:))))
return cell
}
第二步:获取点击子视图的下标,并相应子视图的方法
/* 编辑车辆 */
@objc func editCar(_ tap: UITapGestureRecognizer) {
let img = tap.view as! UIImageView
let row = img.tag
print("editCar",row)
}
/* 删除车辆 */
@objc func deleteCar(_ tap: UITapGestureRecognizer) {
let img = tap.view as! UIImageView
let row = img.tag
print("deleteCar",row)
}
这里说一下下标的获取方法,我们首先给UIImageView添加tag,tag的内容就是下标,在相应方法的时候获取UIImageView的tag这样我们就拿到下标了,触发了方法拿到了下标接下来该干嘛就干嘛就行拉。