我制作了一个自定义单元格,但是没有被调用或强制转换。
我尝试了不同的方式来调用标识符,注册单元格,但是没有任何效果,我有一个示例项目,它正在工作,并且完全相同。所以我不知道是什么原因造成的。
目前这些是我的职能。调试时,我发现它从未在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
答案 0 :(得分:0)
无法将类型'UITableViewCell'(0x119dffaa0)的值强制转换为'TelemedIOS.FAQTableViewCell'(0x1105d8688)
您需要将类别名称FAQTableViewCell
分配给xib中的单元格
答案 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)