无法将单元格转换为自定义单元格

时间:2019-05-28 13:26:12

标签: ios swift uitableview

我制作了一个自定义单元格,但是没有被调用或强制转换。

我尝试了不同的方式来调用标识符,注册单元格,但是没有任何效果,我有一个示例项目,它正在工作,并且完全相同。所以我不知道是什么原因造成的。

目前这些是我的职能。调试时,我发现它从未在cellForRowAt内输入if条件,因此问题就出在这里,但无法弄清楚是什么原因造成的。

func registerCell() {
        let cellNib = UINib(nibName: FAQTableViewCell.reuseIdentifier, bundle: nil)
        tableView.register(cellNib, forCellReuseIdentifier: FAQTableViewCell.reuseIdentifier)
    }

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: FAQTableViewCell.reuseIdentifier, for: indexPath)
        if let cell = cell as? FAQTableViewCell {
            cell.preguntaLabel.text = arrayTitulo[indexPath.row] as? String
            cell.respuestaLabel.text = arrayDesc[indexPath.row] as? String
        }

        return cell
    }

我检查了所有内容,即单元格的.xib,单元格.swift控制器.swift,所有内容都匹配。我不知道该怎么办。

FAQTableViewCell

import AEAccordion

final class FAQTableViewCell: AccordionTableViewCell {

    static let reuseIdentifier = "FAQTableViewCell"

    @IBOutlet weak var headerView: UIView!
    @IBOutlet weak var detailView: UIView!
    @IBOutlet weak var preguntaLabel: UILabel!
    @IBOutlet weak var respuestaLabel: UILabel!

    // MARK: Override

    override func setExpanded(_ expanded: Bool, animated: Bool) {
        super.setExpanded(expanded, animated: animated)

        if animated {
            UIView.transition(with: detailView, duration: 0.3, animations: {
                self.detailView.isHidden = !expanded
            }, completion: nil)
        } else {
            detailView.isHidden = !expanded
        }
    }

    private func toggleCell() {
        detailView.isHidden = !expanded
    }
}

已修复:我刚刚删除了.xib,并在其中添加了自定义单元格 Main.storyboard上的TableViewController

4 个答案:

答案 0 :(得分:0)

  

无法将类型'UITableViewCell'(0x119dffaa0)的值强制转换为'TelemedIOS.FAQTableViewCell'(0x1105d8688)

您需要将类别名称FAQTableViewCell分配给xib中的单元格

enter image description here

答案 1 :(得分:0)

我有同样的问题。在Identity Inspector中,未选中“来自Target的自定义类继承模块”下的内容,再次检查后,它已完美转换。

答案 2 :(得分:-1)

根据具有欺骗性的事实,“我发现它从未在cellForRowAt中进入if”。

检查返回的func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int的vale为!=零

func numberOfSections(in tableView: UITableView) -> Int的值只有在实现时才能使用,如果未实现,则默认值为1

答案 3 :(得分:-1)

请检查单元格是否为零。如果cell为零,则从目标中删除.xib文件,然后再次添加。

enter image description here