我已经看到了很多有关此错误的帖子,但是提供的解决方案对我来说没有。我通过故事板创建了表,并使用了一个自定义的原型单元格创建了一个类。我将标识符设置在单元格上。
单元格式检查员:https://i.stack.imgur.com/ebkja.png
单元格属性检查器:https://i.stack.imgur.com/dirxu.png
故事板表:https://i.stack.imgur.com/uakes.png
dequeue单元格的代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FNListViewCell",for: indexPath) as? FNListViewCell
//filling cell data
// Configure the cell...
return cell!
}
编辑:我尝试了两种不同的事情来使它起作用,这两者都摆脱了错误,但在页面出现时会导致表格出现。
1(我尝试使用:
在表上注册该单元格self.tableView.register(FNListViewCell.self, forCellReuseIdentifier: "FNListViewCell")
2(我将Dequeue语句更改为
let cell = tableView.dequeueReusableCell(withIdentifier: "FNListViewCell") as? FNListViewCell
两者都导致细胞对象的UILABEL元素为空,但是在初始化这些和设置值后,我得到了一个空表。
如果您为表视图单元格创建了一个单独的XIB,则为其创建了一个自定义类,则必须在使用它之前进行注册。如果您在视图控制器中使用表视图并为您的表视图带有插座,请在ViewDidload((中添加此行。
tableView.register(UINib.init(nibName: "NameOfYourClass", bundle: nil), forCellReuseIdentifier: "YourIdentifier")
我找到了问题和解决方案。我是通过编程模态使用
呈现表视图的let ModalController = FileNoteListTableViewController()
self.present(ModalController,animated: true,completion: nil)
我将其更改为使用故事板设置中定义的segue作为现场,而现在的Dequeue正在正常工作。我猜这与控制器手动执行时未正确初始化的控制器有关。