在 UITableView 单元格中显示 xib 视图

Posted

技术标签:

【中文标题】在 UITableView 单元格中显示 xib 视图【英文标题】:Display a xib view into a UITableView Cell 【发布时间】:2017-06-05 09:45:27 【问题描述】:

我在 xib 文件中创建了一个视图,该文件加载到名为“ExperienceScreen”的主 ViewController 中。将此 xib 视图添加到 ExperienceScreen 效果很好。问题是我想在 UITableViewCel 中添加这个 xib 视图。我正在使用以下代码来做到这一点:

   let experiences = service.getExperiences()


    // 3. Loop through the array of experiences
    for element in experiences 

        if let customView = Bundle.main.loadNibNamed("ExperienceDetail", owner: self, options: nil)?.first as? ExperienceDetail
        
            customView.lblTitle.text = element.title
            customView.lblCompany.text = element.company
            let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell
            cell.addSubview(customView)
            cell.bringSubview(toFront: customView)
        
    

    tableView.reloadData()

启动时,子视图不显示在 UITableViewCell 中。 customView 视图用 xib 视图正确填充。我使用断点检查了这一点。

有人知道我做错了什么吗?

非常感谢您的帮助!!

【问题讨论】:

【参考方案1】:

如果你想将你的 xib 文件显示为 UITableViewCell,那么下面的场景可以工作 1.确保你的xib类是UITableViewCell的子类。 2.注册你的xib

//class of xib file
class TableCell: UITableViewCell 
  static let identifier = "TableCell"
  static let nib = UINib(nibName: "TableCell", bundle: nil)


// In view controller
func setupTableView() 
 tableView.dataSource = self
 tableView.delefate = self
 tableView.register(TableCell.nib, forCellReuseIdentifier: 
 TableCell.identifier)

在 viewDidLoad() 中调用 setupTableView()

【讨论】:

感谢您的回复!不幸的是,它仍然没有显示。你在我的代码中看到问题了吗:dropbox.com/s/zr2eknaeovks381/Experiences.swift?dl=0dropbox.com/s/op6kg8a4eh2u0i0/ExperienceDetail.swift?dl=0 在 cellForRowAt 中改变 let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell let cell = tableView.dequeueReusableCell(withIdentifier: ExperienceDetail.identifier) as! ExperienceDetail 并根据您的需要填充 tableCell【参考方案2】:

不要尝试一次设置所有单元格。

您应该实现UITableViewDataSource 协议并使用tableView(_:cellForRowAt:) 方法配置每个单元。在此方法中,您可以调用register(_:forCellReuseIdentifier:) 将您的XIB 用于新创建的单元格。

有很多关于创建表格视图的教程,您可以在其中找到执行此操作的分步说明。

【讨论】:

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

无法使用 .xib 文件在我的自定义单元格中添加任何内容?

带有集合视图的 UITableView 单元格

从 collectionView 单元格中获取和更新 UITableView 单元格单击

使用 xib 和自动布局的自定义 UITableViewCell 无法在顶部的多个单元格中正确显示

在 uitableview 单元格中显示项目的评级

UITableview 单元格中的按钮不会在快速点击时突出显示