2015-05-18 90 views
0

我陷入了构建我的应用程序的问题。基本上我有一个tableview显示自定义单元格中的数据。现在这个小区被分成两个图像;一个在左边,一个在右边。找出点击单元格的坐标

单击单元格时;调用didSelectRowAtIndexPath方法,但是我想找出单元格的哪个部分被点击;无论是正确的图像还是左侧的图像。

做到这一点的一种方法是压倒我自定义单元类的touchesbegan事件;我可以通过这种方式获得触摸的坐标,并手动检查是选择了左侧图像还是右侧图像;然而这导致事件没有被解雇。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    let touch = touches.first as! UITouch 
    let location = touch.locationInView(self) 
    var xcoord = location.x 
    touchPosition = xcoord 
} 

这个代码是什么我想在我的自定义单元格级使用,但我现在不知道怎么火didSelectRowAtIndexPath事件中,该小区在表格中。我也没有提及那张桌子。

这里touchPosition是一个全局变量,我试图设置它,以便我可以在我的didSelectrowAtIndexPath方法中访问它,但它不会被解雇。

+0

插座连接到您的tableView并删除重写 –

+0

您可以使用VAR selectedCell = tableView.cellForRowAtIndexPath(indexPath)作为的UITableViewCell获得的细胞在didselect方法! – Amit89

+0

你必须调用'super'。 –

回答

0

设置您的touchesBegan函数中的单元格的selected属性应使代表调用didSelectRowAtIndexPath

如果不工作,你可以试试这个:

在您的自定义单元格类创建weak var tableView: UITableView?。还要添加var indexPath: NSIndexPath以了解您的UITableViewCell中的单元格索引路径。然后,在创建单元格时,将tableView设置为您的表格视图,将indexPath设置为其索引路径。

现在,你有一个链接到表视图的委托。所以,在你的自定义单元格类touchesBegan,您可以拨打tableView?.delegate?.tableView?(tableView, didSelectRowAtIndexPath: indexPath)

+0

但你不想在'touchesBegan'中做到这一点。例如,用户应该能够将他们的手指从视图上滑开以取消触摸。 –

+0

哦,对。他可以在'touchesEnded'中实现它,并计算它是否在视图的某个安全距离内,就像在UIButton中一样。对于'touchesBegan',他可以检查是否最初按下了哪个图像,然后'touchesEnded'将检查触摸位置是否仍在安全距离内。 – chrisamanse

+0

想想吧,'touch'函数不会妨碍表视图的滚动吗? – chrisamanse