gpt4 book ai didi

arrays - 添加多个表格 View 时访问单元格原型(prototype)

转载 作者:行者123 更新时间:2023-11-30 11:19:28 27 4
gpt4 key购买 nike

我正在使用一个应用程序,其中有使用 for 循环创建的未知数量的 tableView。该问题是在将 cellReuseIdentifier 与单元原型(prototype)对齐时出现的问题。

我因错误而崩溃:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier Cell0 - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'.

我的代码如下所示:

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 捕获多个 tableview 似乎是一个死胡同,有人知道另一种方法吗?

最佳答案

转到 Storyboard,单击 Tableviwe 上的原型(prototype)单元格,并为其指定与您要出列的标识符相同的标识符,错误显示

'unable to dequeue a cell with identifier Cell0 - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'.

在您的情况下,标识符应为“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
}

关于arrays - 添加多个表格 View 时访问单元格原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51439364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com