我创建了两个UITableViewCell对象(FriendsCell,AddFriendsCell),并且具有以下代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == self.selectedFriends.count {
let cell = tableView.dequeueReusableCell(withIdentifier: "AddFriendsCell", for: indexPath) as! AddFriendsCell
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "FriendsCell", for: indexPath) as! FriendsCell
...
AddFriendsCell有一个按钮,单击该按钮时,应该转到另一个视图控制器。但是,单击时会返回记录错误的错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'unable to dequeue a cell with
identifier AddFriendsCell - must register a nib or a class for the
identifier or connect a prototype cell in a storyboard'
*** First throw call stack:
当相应的原型单元在其故事板设置中被非常清楚地标识为“AddFriendsCell”并且类型为AddFriendsCell(UITableViewCell类)时,我无法理解为什么会出现此错误
当我使用:
继续第一个dequeueReusableCell行时tableview.register(AddFriendsCell, forCellReuseIdentifier: "AddFriendsCell")
结果是在运行时它会生成一个空白单元格来代替以前格式正确的AddTableCell。
请帮助我理解为什么在按下AddFriendsCell中的按钮时会抛出此错误,以及如何纠正它。
答案 0 :(得分:1)
您需要在使用之前注册单元格。例如:
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "AddFriendsCell", bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "AddFriendsCell")
}
更新:如果您没有xib
文件,请使用
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(AddFriendsCell.self, forCellReuseIdentifier: "AddFriendsCell")
}