首页 > 解决方案 > 无法将 XIB 加载到可重用的 TableViewCell 中

问题描述

我创建了一个 XIB 文件及其控制器来处理我的可重用自定义单元:

在此处输入图像描述

并设置我的 XIB 的班级所有者:

在此处输入图像描述

class WallTableCell: UITableViewCell {
    //Outlets
    
    func setupCell() {
        setupLabels()
    }
    
    func setupLabels() {
        self.title.text = "Sample Title"
        self.postDescriptionLabel.text = "Sample Description"
    }
}

我,目前有 2 个故事板,第一个故事板使用 a 通向第二个故事板,第二个故事板NavigationView包含 a TabBarView,其中第一个项目具有TableView.

在这里,我UITableViewCell在情节提要中添加了一个

在此处输入图像描述

单元格的类设置为:

在此处输入图像描述

控制器的类设置为:

在此处输入图像描述

我在哪里注册我的笔尖并尝试在cellForRowAt方法上使用它:

class WallViewController: UIViewController {
    @IBOutlet weak var messagesTable: UITableView!
    
    override func viewDidLoad() {
        loadNibForCells()
    }
    
    func loadNibForCells() {
        let nib = UINib(nibName: "WallTableCell", bundle: nil)
        messagesTable.register(nib, forCellReuseIdentifier: "wallCell")
    }
}

extension WallViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let wallCell = messagesTable.dequeueReusableCell(withIdentifier: "wallCell") as? WallTableCell else {
            return UITableViewCell()
        }
        
        wallCell.setupCell()
        
        return wallCell
    }
}

但是,当我在模拟器中运行应用程序时,我仍然得到一个空单元格。

在此处输入图像描述

我应该怎么做才能在我的 tableViewCell 中显示我的自定义 XIB 视图?

在遵循@Sh_Khan 的回答并添加后:

messagesTable.delegate = self
messagesTable.dataSource = self

该应用程序因错误而崩溃:

Thread 1: Exception: "[<NSObject 0x600001628e70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key postDescriptionLabel"

我相信这与TableViewCell故事板内部是空的而不是包含WallTableCell

标签: iosswiftuitableviewstoryboardxib

解决方案


有一个错误:Thread 1: Exception: "[<NSObject 0x600001628e70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key postDescriptionLabel",所以也许你需要解除绑定postDescriptionLabel并将其从 xib 文件重新绑定到 swift 文件。


推荐阅读