我正在使用一个使用for循环创建的unknown number of tableViews
应用程序。将cellReuseIdentifier
与单元格原型对齐时,问题是一个问题。
我因错误而崩溃:
由于未捕获的异常而终止应用程序 “ NSInternalInconsistencyException”,原因:“无法使单元出队 标识符为Cell0的-必须为该寄存器注册一个笔尖或一个类 标识符或连接情节提要中的原型单元。”
我的代码如下:
class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var inviteArray: [(greetingText: String, greetingArray: [String])] = [] // we don't know up front the size of the inviteArray or the sizes of the greetingArray's
var tableViewArray: [UITableView] = []
override func viewDidLoad() {
super.viewDidLoad()
var tableReference = 0
for invite in inviteArray {
let myTableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 200))
self.tableViewArray.append(myTableView)
myTableView.backgroundColor = UIColor.white
myTableView.delegate = self
myTableView.dataSource = self
myTableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell\(tableReference)")
addSubview(myTableView)
tableReference = tableReference + 1
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var count = inviteArray[0].greetingArray.count
for (index, table) in tableViewArray.enumerated() {
if tableView == table {
count = inviteArray[index].greetingArray.count
}
}
return count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// var cell = tableView.dequeueReusableCell(withIdentifier: "Cell0", for: indexPath)
var cell = UITableViewCell? // replacing the variable declaration line above solved this
for (index, table) in tableViewArray.enumerated() {
if tableView == table {
cell = tableView.dequeueReusableCell(withIdentifier: "Cell\(index)", for: indexPath)
cell.textLabel?.text = inviteArray[index].greetingArray[indexPath.row]
}
}
cell.selectionStyle = UITableViewCellSelectionStyle.default
cell.textLabel?.font = UIFont(name: "Courier", size: 12)
cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
return cell
}
}
使用tableViewArray捕获多个表视图似乎是死路一条,有人知道这样做的另一种方法吗?
答案 0 :(得分:0)
转到情节提要,单击Tableviwe上的原型单元,并为其提供与您要出队相同的标识符,错误提示为
'无法使标识符为Cell0的单元出队-必须注册一个笔尖 或标识符的类,或将原型单元连接到 故事板”。
在您的情况下,标识符应为“ Cell0”
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell: UITableViewCell
for (index, table) in tableViewArray.enumerated() {
if tableView == table {
cell = tableView.dequeueReusableCell(withIdentifier: "Cell\(index)", for: indexPath)
cell.textLabel?.text = inviteArray[index].greetingArray[indexPath.row]
}
}
cell.selectionStyle = UITableViewCellSelectionStyle.default
cell.textLabel?.font = UIFont(name: "Courier", size: 12)
cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
return cell
}
答案 1 :(得分:0)
在编辑后的帖子中替换变量声明解决了该问题