UIViewController
はUISearchBar
とUITableView
です。検索バーに何かを入力すると、その文字列がTableViewCellに表示されます。 TableViewCellに.xibを使用するまではうまくいきました。検索バーにテキストを入力して[検索]を押すと、アプリケーションがクラッシュするようになりました。コンソールは、読み取ります。Swift 3 - UITableViewCellは、クラッシュの原因となるキャッチされていない例外
がキャッチされない例外により 'NSUnknownKeyException'、 理由にアプリを終了: '[UITableViewCellの0x7f8456800c00のsetValue:forUndefinedKeyは:]: このクラスは、キー値コーディング準拠のキー artistNameLabelのためではありません。'ここで
.xibである:ここでは
import UIKit
class SearchResultCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var artistNameLabel: UILabel!
@IBOutlet weak var artworkImageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
は、関連のViewControllerコードです:
extension SearchViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if !hasSearched {
return 0
} else if searchResults.count == 0 {
return 1
} else {
return searchResults.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if searchResults.count == 0 {
return tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifiers.nothingFoundCell, for: indexPath)
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifiers.searchResultCell, for: indexPath) as! SearchResultCell
let searchResult = searchResults[indexPath.row]
cell.nameLabel.text = searchResult.name
cell.artistNameLabel.text = searchResult.artistName
return cell
}
}
}
私は予備的な答えを提供していますが、実際にしている場合あなたの状況は、実際にはもっと複雑かもしれおそらく複数のテーブルビューで使用するために自分のxibにあなたの細胞を分離する?必要な作業がすべて完了したことを確認するには、[この回答を検討する](https://stackoverflow.com/a/37316669/5099014)を参照してください。 –