我一直在关注苹果教程here并遇到错误:
2016-01-12 09:34:32.909 FoodTracker[1812:124509] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier MealTableViewCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
程序运行时出现错误,并且AppDelegate.swift的类行上出现红色突出显示的行
这些是我认为导致错误的代码行,正如我通过断点找到的那样:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "MealTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MealTableViewCell
// Configure the cell...
let meal = meals[indexPath.row]
cell.nameLabel.text = meal.name
cell.photoImageView.image = meal.photo
cell.ratingControl.rating = meal.rating
return cell
}
我已经在网上浏览过,很多答案已经说过确保TableCell有一个标识符,但我的确如此,错误仍然会弹出。
如果我需要发布更多信息,请告诉我。
提前致谢
答案 0 :(得分:31)
这对我有用..
我正在使用不同的标识符," DeviceDetailsCell"
let cellIdentifier = "DeviceDetailsCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! DeviceDetailsTableViewCell
答案 1 :(得分:12)
仅供记录,以下是我解决问题的方法:
我获取了属性检查器中的当前标识符,删除了它,按下了返回并单击了。之后,我单击回标识符文本框并重新键入标识符并按下返回。然后我保存了故事板文件,当我运行它时它就起作用了。
答案 2 :(得分:1)
在我的情况下,我从单独的xib文件中获取UITableViewCell(即,不直接将单元格插入storyBoard中的tableView),我忘记以这种方式在tableView中正确注册单元格:
self.tableView.register(UINib(nibName: "NAME_OF_THE_CELL_CLASS", bundle: nil), forCellReuseIdentifier: "REUSE_IDENTIFIER");
答案 3 :(得分:0)
快速(5.0)
我遇到了同样的问题,但在我的情况下,视图是xib,我的解决方法是:
Bundle.main.loadNibNamed("MealTableViewCell", owner: self, options: nil)?.first as! MealTableViewCell
完整的代码如下:
import UIKit
class MealTableViewCell: UITableViewCell {
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
}
}
extension NameViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("MealTableViewCell", owner: self, options: nil)?.first as! MealTableViewCell
return cell
}
}