如何从SWIFT中的UITableViewCell子类中获取IndexPath?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (413)

我有UITableViewCell子类及其关联的XIB。我有一个UILabel和一个UIButton在这个单元格中,我已经将按钮的内部操作连接到子类。

我需要的是当单元格中的按钮被点击时,得到有那个按钮的单元格的索引路径。或者通过委托或其他方式将其发送回视图控制器。

因为我在一个UITableViewCell子类,我用SWIFT实现了这样的解决方案。

import UIKit

class ContactCell: UITableViewCell {

    @IBOutlet weak var nameLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        selectionStyle = .None
    }

    @IBAction func callButtonPressed(sender: UIButton) {
        let indexPath = (self.superview as UITableView).indexPathForCell(self)
        println("indexPath?.row")
    }

}

但是当我点击按钮时,它会崩溃,并有一条错误信息:

Swift dynamic cast failed.

怎么解决?

提问于
用户回答回答于

将单元格本身作为参数传递给委托,然后您就可以轻松地完成tableView.indexPathForCell(cellFromDelegateMethod)

用户回答回答于

类型实际上没有成员SuperView,但是发送方有

var cell: UITableViewCell = sender.superview.superview as UITableViewCell

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动