我在标准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
}
使用情节提要不会导致该问题。如果我创建Cell并引用一个标识符,则注册可以正常工作。我只是不以编程方式了解它
我尝试使用其他Navigationcontroller: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中注册了通用tableView的单元格,而不是在我创建的testView中注册了UITableView。
如果我是对的,我该如何为特定的TableView注册一个新的单元格
如果我错了,如何在我的UIViewController中访问UITableViewController。因为在第一种情况下使用UIViewController我无法访问self.tableView.register。我可以注册自己的TableViewself.testView.register
您尝试使用过
self.testView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")
而不是
self.testView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
您正在使用XIB文件,然后需要以Nib
方法在testView中注册viewDidLoad()
对象。
请替换:-
self.testView.register(UINib(nibName: "nib file name", bundle: nil), forCellReuseIdentifier: "cell identifier")
with:-
self.testView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
我发现了我的问题。我在单元格中犯了一个错误。声明不清楚,因此我总是注册一个安培]