首页 > 解决方案 > 具有自定义单元格类的 UITableView 显示正确的行数但全部为空白

问题描述

我似乎无法弄清楚为什么我的表格中的单元格都是空白的,带有自定义单元格。我已经搜索并尝试了一段时间的建议,但无法弄清楚。在这一点上,我觉得我错过了一些明显的东西

这是我的 .swift

import UIKit

struct Contact {

    var name:String
    var title:String
    var phone:String

}

class ContactTableViewCell: UITableViewCell {

    @IBOutlet weak var contactName: UILabel!
    @IBOutlet weak var contactTitle: UILabel!
    @IBOutlet weak var contactPhone: UILabel!

}

class Contacts:UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var contactTable: UITableView!

    var contactData = [
        Contact(name: "Main Office", title: "Title", phone: "Phone Here"),
        Contact(name: "Joe Bloggs", title: "Title Here", phone: "Phone Number"),
        Contact(name: "John Smith", title: "Another Title", phone: "Another Phone")
    ]

    override func viewDidLoad() {
        super.viewDidLoad()

        contactTable.register(ContactTableViewCell.self, forCellReuseIdentifier: "cellId")
        contactTable.delegate = self
        contactTable.dataSource = self

    }

    func tableView(_ contactTable: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.contactData.count
    }

    func numberOfSectionsInTableView(contactTable: UITableView) -> Int {
        return 1
    }

    func tableView(_ contactTable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let contactCell = contactTable.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! ContactTableViewCell

        let contact = contactData[indexPath.row]

        contactCell.contactName?.text = contact.name
        contactCell.contactTitle?.text = contact.title
        contactCell.contactPhone?.text = contact.phone

        return contactCell

    }

}

我的 IBOutlets 肯定是链接的,并且单元格链接到 ContactTableViewClass

在此处输入图像描述

这就是我的细胞的样子

在此处输入图像描述

任何帮助将不胜感激,谢谢

标签: iosswiftxcodeuitableview

解决方案


评论这一行

contactTable.register(ContactTableViewCell.self, forCellReuseIdentifier: "cellId")

并将标识符设置为cellIdIB 中的单元格,当您创建原型单元格时,不要注册它,因为注册会自动发生

在您的情况下,所有网点均为零

// try contactCell.contactName.text and it' ll crash
contactCell.contactName?.text = contact.name
contactCell.contactTitle?.text = contact.title
contactCell.contactPhone?.text = contact.phone

当您使用在 IB 中创建布局的类覆盖 IB 注册时,就像您ContactTableViewCell.self以编程方式完全创建具有其布局的类时一样


推荐阅读