2017-06-05 101 views
1

我在一个名为“ExperienceScreen”的主ViewController中加载的xib文件中创建了一个视图。将这个xib视图添加到ExperienceScreen可以很好地工作。问题是我想在UITableViewCel中添加这个xib视图。我使用下面的代码来做到这一点:在一个UITableView单元中显示一个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 View正确填充。我用断点检查了这个。 enter image description here

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

非常感谢您的帮助!

回答

2

如果你想显示你的xib文件为UITableViewCell,那么下面的场景工作 1.确保你的xib类是UITableViewCell的子类。 2.注册您的厦门国际银行在viewDidLoad中()

+0

感谢您的回复

//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) } 

调用setupTableView()!不幸的是,它仍然没有显示。您是否在我的代码中看到此问题: https://www.dropbox.com/s/zr2eknaeovks381/Experiences.swift?dl=0 https://www.dropbox.com/s/op6kg8a4eh2u0i0/ExperienceDetail.swift ?dl = 0 –

+0

In cellForRowAt change let cell = tableView.dequeueReusableCell(withIdentifier:“cell”)!作为UITableViewCell 让cell = tableView.dequeueReusableCell(withIdentifier:ExperienceDetail.identifier)as! ExperienceDetail 和根据您的需要填充表CellCell –

+0

非常感谢! –

0

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

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

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

相关问题