如何在uitableviewcell(swift / xcode)中从uiview获取单元格索引

时间:2016-09-03 23:20:11

标签: swift uitableview uiview

我在UIViewControllers课程中有两个MyTableViewCell被称为upVote和downVote。我添加了手势识别器,用于以编程方式点击这些视图但不确定如何获取单元格的父单元格或索引,以便我知道被点击的UIView所在的单元格。如何获取单元格或函数handleTapUp和handleTapDown中的tapped cell的索引?

这是我的班级

class MyTableViewCell: UITableViewCell {
    // MARK: Properties

    @IBOutlet weak var nameLabel: UILabel!

    @IBOutlet weak var upVote: UIImageView!

    @IBOutlet weak var downVote: UIImageView!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

        let tapUp = UITapGestureRecognizer(target: self, action: "handleTapUp:")
        tapUp.delegate = self
        upVote.addGestureRecognizer(tapUp)

        let tapDown = UITapGestureRecognizer(target: self, action: "handleTapDown:")
        tapDown.delegate = self
        downVote.addGestureRecognizer(tapDown)

    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state

    }

    func handleTapUp(sender: UITapGestureRecognizer? = nil) {
        // handling code
        // get cell(index)
    }

    func handleTapDown(sender: UITapGestureRecognizer? = nil) {
        // handling code
        // get cell()
    }

}

我已经尝试过self.superclass来获取uitableviewcell,当我打印调试描述时,它会说uitableviewcell,但每当我尝试对该对象做任何其他事情时,我都会得到一个错误,即self.superclass是AnyObject类型。我曾尝试以多种不同方式声明/转换self.superclass,但没有一种方法可行。这似乎应该很简单,所以希望我错过了一些东西。

1 个答案:

答案 0 :(得分:1)

  • 在customCellClass中声明一个变量: -      var indexForCell:NSIndexPath!

  • 在ViewControllers中deque函数func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell中的单元格添加: -

     cell.indexForCell = indexPath
    
  • 现在访问班级功能中的indexForCell: -

    func handleTapUp(sender: UITapGestureRecognizer? = nil) {
    
    let rowValue = indexForCell.row
    
    }
    
    func handleTapDown(sender: UITapGestureRecognizer? = nil) {
    // handling code
    // get cell()
     }