gpt4 book ai didi

swift - TableView 没有使用正确的 TableViewCell

转载 作者:行者123 更新时间:2023-11-28 16:09:52 25 4
gpt4 key购买 nike

我有一个分组 TableView ,数据源如下所示:

let customCell = UITableViewCell()
customCell.textLabel?.text = "this is a custom cell"

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellA", for: indexPath) as! CellA

cell.label.text = "dummy text"

switch indexPath.section {
case 0 :
switch indexPath.row {
case 0 : cell.label.text = "Foo"
case 1 : cell.label.text = "Bar"
default:
fatalError("Row does not exist")
}
case 1 :
switch indexPath.row {
case 0 : return customCell
default:
fatalError("Row does not exist")
}
default:
fatalError("Section does not exist")
}

return cell
}

func numberOfSections(in tableView: UITableView) -> Int { return 2 }

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0 : return 2
case 1 : return 1
default:
fatalError("Section does not exist")
}
}

问题:
我希望第 2 部分使用 customCell 但它仍然使用我使用 dequeueReusableCell(identifier:,indexPath:) 方法创建的单元格,具有虚拟文本 “虚拟文本”。如果我使用以下方法,则不会发生这种情况:dequeueReusableCell(identifier:)(没有 indexPath)。

这样做的正确方法是什么,还是我应该只使用没有 indexPath 的方法?

最佳答案

所以您几乎是正确的,您的 customCell 也被添加到您的 tableView 中。但是这里发生的事情是,首先你在 cellForRowAtdequeueing 一个单元格,然后检查 section 并返回 cell。因此,添加了 indexPath.section = 1customCell,但 dequeued 单元格出现在它的顶部。您可以调试 View 层次结构 并看到它的神奇之处。

现在您必须将您的 cell 创建移动到单独的 section 并从那里返回,如下所示,它应该可以工作:

switch indexPath.section {
case 0:
let cell = tableVIew.dequeueReusableCellWithIdentifier("cellA", forIndexPath: indexPath) as! cellA
cell.textLabel?.text = "dummy text"

switch indexPath.row {
case 0 :
cell.textLabel?.text = "Foo"
return cell
case 1 :
cell.textLabel?.text = "Bar"
return cell
default:
fatalError("Row does not exist")
}
case 1:
switch indexPath.row {
case 0 :
return customCell
default:
fatalError("Row does not exist")
}
default:
fatalError("Section does not exist")
}

关于swift - TableView 没有使用正确的 TableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39726515/

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