2017-02-24 42 views
1

我得到這個錯誤時,我的「其他」塊運行的第一行:Swift3 - 搜索崩潰表的第一個字母查看

無法出列與indentifier PhoneCell細胞 - 必須註冊筆尖或類的標識符或連接故事板中的原型單元格

因此,初始表加載正常,但是當您嘗試執行搜索時引發此異常。這只是在我去一個自定義單元后纔開始發生的。以下是正在崩潰的表的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

你註冊的resultsController表視圖‘PhoneCell’標識? –

回答

1

您的UITableViewController在其故事板中沒有原型單元格"PhoneCell"或者如果您以編程方式執行此操作,您沒有爲正在調用的單元標識符註冊該類。

嘗試在UIViewControllerviewDidLoad或實例化之前的某處添加此您UITableView

self.resultsController.tableView.register(PhoneSearchResultTableViewCell.self, forCellReuseIdentifier: "PhoneCell") 
+0

工作,謝謝! – GED125

+0

@ GED125肯定的事Bub。 –

1

看來您使用的是UITableViewController而不是單獨的UITableView。如果您在IB中將該自定義單元格創建爲原型單元格,那麼請確保在代碼和IB中將重用標識符設置爲相同。

UITableViewController自動註冊原型單元。

但是,如果您單獨開始使用UITableView,則需要使用UINib或您的自定義單元格的類別調用.register方法。