我遇到了在swift中构建应用程序的问题。基本上我有一个tableview,显示自定义单元格中的数据。现在这个细胞分为两个图像;一个在左边,一个在右边。
单击单元格时;调用didSelectRowAtIndexPath
方法然而我想找出单击的单元格的哪个部分;无论是正确的图像还是左图像。
执行此操作的一种方法是覆盖自定义单元类的touchesbegan
事件;我可以通过这种方式获得触摸的坐标,并手动检查左图像或右图像是否被选中;但是这会导致d idSelectRowAtIndexPath
事件没有被触发。
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 :(得分:0)
在selected
函数中设置单元格的touchesBegan
属性应该使代理人调用didSelectRowAtIndexPath
。
如果这不起作用,您可以试试这个:
在自定义单元格类中创建weak var tableView: UITableView?
。同时添加var indexPath: NSIndexPath
以了解UITableViewCell
中单元格的索引路径。然后在创建单元格时,将tableView
设置为表视图,将indexPath
设置为其索引路径。
现在,您有一个指向表视图委托的链接。因此,在自定义单元格类touchesBegan
中,您可以调用tableView?.delegate?.tableView?(tableView, didSelectRowAtIndexPath: indexPath)