将 xib 视图显示到 UITableView 单元格中

Display a xib view into a UITableView Cell

我在名为 "ExperienceScreen" 的主 ViewController 中加载的 xib 文件中创建了一个视图。将此 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 视图。我使用断点检查了这个。

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

非常感谢您的帮助!!

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

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

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

如果你想将你的 xib 文件显示为 UITableViewCell,那么下面的场景是可行的 1. 确保你的 xib class 是 UITableViewCell 的子 class。 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()