我在一个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 视图。我用断点检查了这个。
有人知道我做错了什么吗?
非常感谢帮助!!
答案 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用于新创建的单元格。
有许多关于创建表视图的教程,您可以在其中找到有关执行此操作的分步说明。