Ios 触发UITap手势时,从单元格的子视图中获取单元格的引用

Ios 触发UITap手势时,从单元格的子视图中获取单元格的引用,ios,swift,uitableview,cell,uitapgesturerecognizer,Ios,Swift,Uitableview,Cell,Uitapgesturerecognizer,当从某个单元格的子视图中触发UITap手势时,我尝试从该单元格检索数据。我当前的代码返回的每个单元格都是错误的,我不知道它是如何计算出来的。有时,它会为同一个单元格更改 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if (segue.identifier == "followerSeg" || segue.identifier == "followingSeg") {

当从某个单元格的子视图中触发UITap手势时,我尝试从该单元格检索数据。我当前的代码返回的每个单元格都是错误的,我不知道它是如何计算出来的。有时,它会为同一个单元格更改

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "followerSeg" || segue.identifier == "followingSeg") {
        let vc = segue.destinationViewController as! FollowersFollowingVC
        let x = sender as! UITapGestureRecognizer
        let view = x.view!
        let cellone = view.superview as UIView?
        let cell = cellone?.superview as! PersonCell
        vc.userName = cell.person.profileName
        vc.userId = cell.person.id
        vc.segStatus = segue.identifier == "followerSeg" ? 0 : 1
    }
}

您可能希望尝试使用UITableView的
indexPathForRowAtPoint
方法。我已经在objc/iOS上工作了5年多了,但这是我在Swift上的第一次尝试。请原谅任何语法错误

假设您有一个名为
tableView
的属性,代码如下:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "followerSeg" || segue.identifier == "followingSeg") {
        let vc = segue.destinationViewController as! FollowersFollowingVC
        let x = sender as! UITapGestureRecognizer
        let location = x.locationInView(self.tableView) as CGPoint
        let indexPath = self.tableView.indexPathForRowAtPoint(location) as NSIndexPath?
        let cell = self.tableView.cellForRowAtIndexPath(indexPath!) as! PersonCell
        vc.userName = cell.person.profileName
        vc.userId = cell.person.id
        vc.segStatus = segue.identifier == "followerSeg" ? 0 : 1
    }
}

语法很好。我会投票,但我没有必要的声誉。非常感谢。