表格视图中的自定义单元格未显示?

Posted

技术标签:

【中文标题】表格视图中的自定义单元格未显示?【英文标题】:Custom Cell in table view not showing? 【发布时间】:2020-03-21 06:40:51 【问题描述】:

我无法让我的自定义单元格显示在我的表格视图中。我确保在情节提要中设置单元重用标识符并将我的 IBOutlets 连接到我的单元标签,但只显示默认单元而不是我的自定义单元。这是我的表格视图控制器的代码,下面是表格视图单元格的代码:

class HoursTableViewController: UITableViewController 

    @IBOutlet var hourDonationSegmentedButton: UISegmentedControl!
    @IBOutlet var addEntryButton: UIButton!
    @IBOutlet var editEntryButton: UIButton!

    var hoursEntries = [HoursEntry]()
    var dummyData : [HoursEntryTest] = [HoursEntryTest(hours: 1, minutes: 30, entryTitle: "title", organization: "unicef", content: "content", date: Date(timeIntervalSinceNow: 0))]
    let cellReuseIdentifier = "HoursTableViewCell"

    override func viewDidLoad() 
        super.viewDidLoad()
        prepareTableView()
    

    func prepareTableView() 
        self.tableView.dataSource = self
        self.tableView.delegate = self
        self.tableView.register(HoursTableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
    




    extension HoursTableViewController 

        override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
            return dummyData.count

        

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

            var cell : HoursTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) as! HoursTableViewCell
            let hoursEntry = dummyData[indexPath.row]
            cell = setCellTextFromHoursEntry(currentCell: cell, hoursEntry: hoursEntry)

            return cell
        

        override func numberOfSections(in tableView: UITableView) -> Int 
            return 1
        

        func setCellTextFromHoursEntry(currentCell: HoursTableViewCell, hoursEntry: HoursEntryTest) -> HoursTableViewCell 
            currentCell.entryTitleLabel!.text = hoursEntry.entryTitle;
            currentCell.organizationLabel!.text = hoursEntry.organization;
            currentCell.dateLabel!.text = "placeholder date"
            currentCell.hourLabel!.text = String(hoursEntry.hours);
            currentCell.minuteLabel!.text = String(hoursEntry.minutes);

            return currentCell;
        

class HoursTableViewCell : UITableViewCell 

    @IBOutlet var entryTitleLabel: UILabel! = 
        let label = UILabel()
        return label
    ()

    @IBOutlet var organizationLabel: UILabel! = 
        let label = UILabel()
        return label
    ()

    @IBOutlet var dateLabel: UILabel! = 
        let label = UILabel()
        return label
    ()

    @IBOutlet var hourLabel: UILabel! = 
        let label = UILabel()
        return label
    ()

    @IBOutlet var minuteLabel: UILabel! = 
        let label = UILabel()
        return label
    ()

感谢您的帮助!

【问题讨论】:

Hii 如果是xib文件则不需要使用register方法。请试试这个:tableView.register(UINib(nibName: "HoursTableViewCell", bundle: nil), forCellReuseIdentifier: cellReuseIdentifier) 【参考方案1】:

如果您从Nib 文件创建自定义单元格,您应该这样定义单元格:

tableView.register(UINib(nibName: "HoursTableViewCell", bundle: nil), forCellReuseIdentifier: cellReuseIdentifier)

还有一点:

如果您为自定义单元格使用 nib 文件并设置 IBOutlet,则无需将元素定义为

@IBOutlet var entryTitleLabel: UILabel! = 
        let label = UILabel()
        return label
    ()

你只需要设置@IBOutlet var entryTitleLabel: UILabel!

【讨论】:

以上是关于表格视图中的自定义单元格未显示?的主要内容,如果未能解决你的问题,请参考以下文章

自定义表格单元格未调整大小以适合内容视图

自定义单元格未显示

iOS - 表格视图单元格未正确呈现

自定义单元格未出现在表格视图中

如何在表格视图中加载不同的自定义单元格

为啥我的自定义表格单元格中的标签在单击行之前无法显示