UITableView与自定义单元格类显示正确的行数,但全部为空白

时间:2019-04-21 19:35:48

标签: ios swift xcode 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

enter image description here

这是我的手机外观

enter image description here

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

1 个答案:

答案 0 :(得分:1)

评论此行

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

并将标识符cellId设置为IB中的单元格,创建原型单元格时,请勿对其进行注册,因为注册会自动发生

在您的情况下,所有门店都为零

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

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