Swift3 - 搜索崩溃表视图的第一封信

时间:2017-02-24 00:34:08

标签: swift uitableview uisearchdisplaycontroller

当我的“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
    }
}

2 个答案:

答案 0 :(得分:1)

您似乎正在使用UITableViewController而不是单独的UITableView。如果您在IB中将该自定义单元格创建为原型单元格,请确保在代码和IB中将重用标识符设置为相同。

UITableViewController自动注册原型单元格。

但是,如果您开始单独使用UITableView,则需要使用.register或自定义单元格类调用UINib方法。

答案 1 :(得分:1)

您的UITableViewController在其故事板中没有原型单元格"PhoneCell",或者如果您以编程方式执行此操作,则不会为您正在调用的单元格标识符注册该类。

在您实例化UIViewController之前,请尝试在viewDidLoad的{​​{1}}或某处添加此内容:

UITableView