在xIT视图中显示xib视图

时间:2017-06-05 09:45:28

标签: swift xcode uitableview addsubview

我在一个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中。使用xib View正确填充 customView 视图。我用断点检查了这个。 enter image description here

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

非常感谢帮助!!

2 个答案:

答案 0 :(得分:2)

如果要将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()

答案 1 :(得分:0)

不要试图一次性设置你的细胞。

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

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