表格视图中的自定义单元格未显示?
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!
【讨论】:
以上是关于表格视图中的自定义单元格未显示?的主要内容,如果未能解决你的问题,请参考以下文章