【问题标题】:How to get cell index from uiview in uitableviewcell (swift/xcode)如何从 uitableviewcell 中的 uiview 获取单元格索引(swift/xcode)
【发布时间】:2016-09-03 23:20:10
【问题描述】:

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

这是我的课

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 ,但都没有奏效。这似乎应该很简单,所以希望我遗漏了一些东西。

【问题讨论】:

    标签: swift uitableview uiview


    【解决方案1】:
    • 在您的 customCellClass 中声明一个变量:- var indexForCell : NSIndexPath!

    • 在你的 ViewControllers 中 dequeing 函数 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()
       }
      

    【讨论】:

    • 这正是我所需要的。谢谢你。我做错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多