当我的“else”块的第一行运行时,我收到此错误:
无法使用标识符PhoneCell对单元格进行出列 - 必须为标识符注册nib或类或在故事板中连接原型单元格
因此,初始表加载得很好,但是当您尝试进行搜索时,会抛出此异常。这只是在我去自定义单元格后才开始发生的。这是崩溃的表的cellForRowAtIndexPath函数。知道发生了什么事吗?
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == self.tableView{
let cell = self.tableView.dequeueReusableCell(withIdentifier: "PhoneCell", for: indexPath) as! PhoneSearchResultTableViewCell
cell.nameLabel.text = phones[indexPath.row].name.value
cell.descriptionLabel.text = phones[indexPath.row].descriptionText.value
cell.modelLabel.text = phones[indexPath.row].model.value
return cell
}else{
let cell = self.resultsController.tableView.dequeueReusableCell(withIdentifier: "PhoneCell", for: indexPath) as! PhoneSearchResultTableViewCell
cell.nameLabel.text = filteredPhones[indexPath.row].name.value
cell.descriptionLabel.text = filteredPhones[indexPath.row].descriptionText.value
cell.modelLabel.text = filteredPhones[indexPath.row].model.value
return cell
}
}
答案 0 :(得分:1)
您似乎正在使用UITableViewController
而不是单独的UITableView
。如果您在IB中将该自定义单元格创建为原型单元格,请确保在代码和IB中将重用标识符设置为相同。
UITableViewController
自动注册原型单元格。
但是,如果您开始单独使用UITableView
,则需要使用.register
或自定义单元格类调用UINib
方法。
答案 1 :(得分:1)
您的UITableViewController
在其故事板中没有原型单元格"PhoneCell"
,或者如果您以编程方式执行此操作,则不会为您正在调用的单元格标识符注册该类。
在您实例化UIViewController
之前,请尝试在viewDidLoad
的{{1}}或某处添加此内容:
UITableView