如何获取在UITableView单元格选择中哪个元素收到选择?

时间:2019-01-12 06:02:54

标签: ios swift

如何获取UITableView的select方法中单元格中的点击接收元素?

class MyCell: UITableViewCell {
    @IBOutlet weak var eventImageView: UIImageView!
    @IBOutlet weak var contentTitleView: UIImageView!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var descriptionLabel: UILabel!
}

class SampleTableViewController: UITableViewController {
    // ..
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        // how to check if the tap was on eventImageView when the cell got tapped or on a label or on any other UI element? 
    }
}

我要寻找的是类似于JavaScript中的event.target的东西,它提供了用户点击的UI元素,而不是跟踪数组中的每个UI元素。

2 个答案:

答案 0 :(得分:0)

// Here I don't mention cellForRow and numberOfRow Method But in didselect method this way you can get your selected image Hope it helps you   

     class MyCell: UITableViewCell {
            @IBOutlet weak var eventImageView: UIImageView!
        }

        class SampleTableViewController: UITableViewController {
            var arrImages = [UIImage]()

            override func viewDidLoad() {
                super.viewDidLoad()
                arrImages = ["passyourimages"]
            }

            func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

                arrImages[indexPath.row] // Here you get your selected image 
// indexPath.row giving you index of selected cell and that index will be your array index and you got your selected image here !!

            }
        }

答案 1 :(得分:0)

This tutorial提供了解决方案。
基本思想是您覆盖hitTest:withEvent:中的MyCellUIViewtableViewCell的子类。
此函数将计算您需要的hitTest:withEvent:中最触摸的子视图。
但是然后,您对nil的实现应返回tableViewCell,它将触摸转移到didSelectRowAtIndexPath,然后调用userInteractionEnabled
工作的一项要求是,将单元格内的true子视图中的RecyclerView设置为RecyclerView