IOS Swift 如何给Cell中的UIImageView添加点击事件

很多时候我们需要在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这样我们就拿到下标了,触发了方法拿到了下标接下来该干嘛就干嘛就行拉。

你可能感兴趣的:(知识备忘录)