gpt4 book ai didi

ios - 以编程方式填充 UITableViewCells - Swift

转载 作者:行者123 更新时间:2023-11-29 01:19:54 24 4
gpt4 key购买 nike

我正在开发一个基于 IOS Swift 的项目,该项目使用一些类来自定义 UITableViewUITableViewCell。现在,UITableView 内的一个单元格有一个内部 UITableView。我想知道在 cellForRowAtIndexPath 内部是否有可能,我也可以在同一进程中以编程方式填充单元格。

例如:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! CustomTableViewCell
...... do stuff
cell.detailview.uitableview <!-- populate the cells here?
.......
return cell
}

建议?

最佳答案

假设三种不同类型的细胞:

  • class NormalTableViewCell: UITableViewCell: 这用于外部(主) TableView 的“常规”单元格。
  • class TableContainingTableviewCell : UITableViewCell:这用于您的外部(主) TableView 的“特殊”单元格,其中包含一个 TableView (内部) 内。

  • class InnerTableViewCell : UITableViewCell:这用于内部表格 View 的单元格(那些包含在类 TableContainingTableviewCell 的单元格中)。

(将每个替换为您的实际类(class)名称)。

,你可以使用这段代码:

override func viewDidLoad()
{
super.viewDidLoad()

// This can also be done in storyboard with prototype cells:
self.tableView.registerClass(NormalTableViewCell.class, forCellReuseIdentifier: normalCellIdentifier)
self.tableView.registerClass(TableContainingTableViewCell.class, forCellReuseIdentifier: specialCellIdentifier)
}

override func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath
) -> UITableViewCell
{
if tableView == self.tableView {
// [A] OUTER TABLE VIEW

if indexPath == index path of table-containing cell {
// (A.1) TABLE-CONTAINING CELL

let cell = tableView.dequeueReusableCellWithIdentifier(specialCellIdentifier, forIndexPath: indexPath) as! TableContainingTableViewCell

// (...configure cell...)

// Setup and refresh inner table view:

cell.contentView.tableView.dataSource = self

// This is needed for dequeueing to succeed:
cell.contentView.tableView.registerClass(InnerTableViewCell.class, forCellReuseIdentifier: innerCellIdentifier)

cell.contentView.tableView.reloadData()
// ^ THIS TRIGGERS A CALL TO THIS FUNCTION, ON THE
// INNER TABLE VIEW (PATH [B] BELOW)

return cell
}
else {
// (A.2) NORMAL CELL

let cell = tableView.dequeueReusableCellWithIdentifier(normalCellIdentifier, forIndexPath: indexPath) as! NormalTableViewCell

// (configure cell)

return cell
}
}
else {
// [B] INNER TABLE VIEW

let cell = tableView.dequeueReusableCellWithIdentifier(innerCellIdentifier, forIndexPath: indexPath) as! InnerTableViewCell

// (configure cell)

return cell
}
}

...但我强烈反对将 TableView 嵌入到另一个 TableView 的单元格中。至少,确保内部表格 View 不需要滚动(即包含单元格足够高以显示所有行并且表格本身已禁用滚动)。

关于ios - 以编程方式填充 UITableViewCells - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com