无法注册以编程方式在UIViewController中创建的TableView的TableCell

问题描述 投票:1回答:3

我在标准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

ios swift uitableview uiviewcontroller
3个回答
1
投票

您尝试使用过

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

而不是

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

0
投票

您正在使用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")

0
投票

我发现了我的问题。我在单元格中犯了一个错误。声明不清楚,因此我总是注册一个安培]

© www.soinside.com 2019 - 2024. All rights reserved.