2017-02-24 6 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"のストーリーボードにプロトタイプセルが含まれていないか、プログラマチックに実行している場合は、呼び出すセル識別子のクラスを登録していません。あなたはUITableViewをインスタンス化する前に、あなたのUIViewControllerviewDidLoadどこかでこれを追加すること

試してみてください。

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

それはうまくいきました、ありがとう! – GED125

+0

@ GED125確かなものバブ。 –

1

別のUITableViewではなくUITableViewControllerが使用されているようです。カスタムセルをIBのプロトタイプセルとして作成した場合は、再利用識別子がコードとIBで同じに設定されていることを確認してください。

UITableViewControllerは、プロトタイプセルを自動的に登録します。

ただし、UITableViewを別々に使用する場合は、UINibまたはカスタムセルのクラスを使用して.registerメソッドを呼び出す必要があります。

関連する問題