无法以编程方式注册在 UIViewController 中创建的表视图的表单元格



我在标准 ViewController 中创建了一个 TableView。问题是我无法注册新的单元格。它总是导致错误:">
无法使用标识符 CustomCell 取消排队的单元格 - 必须为标识符注册笔尖或类,或者在情节提要中连接原型单元格">

class ViewController: UIViewController {
var testView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(testView)
self.testView.register(CustomCell.self, forCellReuseIdentifier: "CellID")
self.testView.dataSource = self
self.testView.delegate = self
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let item = self.item(at: indexPath)
let cell = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath) as! CustomCell
cell.titleLabel.text = item
cell.coverView.image = UIImage(named: "Swift")
return cell
}

使用情节提要不会导致该问题。如果我创建单元格并引用标识符,则注册效果很好。我只是不以编程方式理解它

我尝试使用其他导航控制器注册单元格:UITableViewController。它只是工作,因为我使用了:

self.tableView.register(Cellstest.self, forCellReuseIdentifier: "CellID")
//and not using the created TableView "testView". 
//Using self.testView.register  leads to the same error

在我对上述代码的看法中,我在UITableViewController中为通用表视图注册了单元格,而不是我创建的testView:UITableView。

如果我是对的,我怎么能为特定的表格视图注册一个新单元格

如果我错了,我如何能够访问我的UIViewController中的UITableViewController。 因为在使用UIViewController的第一种情况下,我无法访问
self.tableView.register
我只能注册我自己的TableViewself.testView.register

你试过使用

self.testView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")

而不是

self.testView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")

您正在使用 XIB 文件,然后需要在 testView 中注册一个Nib对象viewDidLoad()方法。

请替换:-

self.testView.register(UINib(nibName: "nib file name", bundle: nil), forCellReuseIdentifier: "cell identifier")

跟:-

self.testView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")

我发现了我的问题。我在牢房里犯了一个错误。声明不清楚,因此我总是注册一个

有时您只需要查看您放置注册的位置。在大多数情况下,我们将其放置在 viewDidLoad 中,但您还需要观察是否发生了任何将数据加载到表中的事情,然后再注册 Cells。确保在对表视图执行任何数据加载之前注册这些单元格。

最新更新