将 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()
我在名为 "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()