gpt4 book ai didi

ios - 处理表中 UITableViewCell 的多个子类

转载 作者:行者123 更新时间:2023-11-30 13:29:55 25 4
gpt4 key购买 nike

我正在详细 View Controller 中构建一个UITableView。此 TableView 的一些方面包括:

  • 在 Interface Builder 中使用标识符/子类定义多种单元格样式;例如,PhotoCellInfoCell,它们都扩展了 UITableViewCell
  • 单元格是动态生成的。如果详细 View Controller 中缺少某些值,这些单元格将不会显示。
  • UITableViewCell 的每个子类中,我创建了一个 static createCell() 方法,该方法使用 tableView.dequeueReusableCellWithIdentifier 返回已初始化、填充的单元格>.

问题

  1. 在这种情况下构建表格 View 的最佳实践是什么?
  2. 在下面的方法中,在数据源委托(delegate)方法以外的方法中使用 dequeueReusableCellWithIdentifier 是否可以接受(甚至有用)?

当前方法

我采用的方法是定义一个包含单元格数组的 source 属性。我不确定这是否是处理它的最佳方法。

PlaceViewController+UITableViewDataSource.swift

extension PlaceViewController: UITableViewDataSource {

var source: [UITableViewCell] {
get {
var cells = [UITableViewCell]()

if let cell = SummaryCell.createCell(tableView, text: place?.generalInfo) {
cells.append(cell)
}
// ^^ repeat above for each cell in table

return cells
}
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return source.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return source[indexPath.row]
}

}

SummaryCell.swift

class SummaryCell : UITableViewCell {

@IBOutlet var summaryLabel: UILabel!

static func createCell(tableView: UITableView, text: String?) -> SummaryCell? {
if let text = text {
let cell = tableView.dequeueReusableCellWithIdentifier("SummaryCell") as! SummaryCell
cell.summaryLabel.text = text
return cell
}
return nil
}

}

最佳答案

如果您在表中使用不同的单元格,不妨进行条件检查或切换特定索引中需要的单元格类型,然后尝试在已创建该类型的单元格时进行双端队列 - 如果未初始化新的一个。

此外,查看您的代码,每当调用 cellForRowAtIndexPath 时,您都会创建一个新的单元格数组,这不好。

关于ios - 处理表中 UITableViewCell 的多个子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685136/

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