gpt4 book ai didi

ios - 正确隐藏和显示 TableViewCells?

转载 作者:行者123 更新时间:2023-11-28 08:02:45 25 4
gpt4 key购买 nike

我正在为我的应用制作一个 TableView Controller ,它有不同的 header 。我正在使用其中有一个按钮的自定义标题 View 。该按钮用于显示该部分的行。我将每个标题的节号保存在按钮的标记属性中。

我看过 20 多篇关于此的帖子,但他们都说将高度设置为 0 并隐藏单元格。这很荒谬,因为自动布局会产生大量错误并使应用程序延迟很多。

我所做的是制作 2 个不同的单元格。一个用于显示我的数据,另一个只是一个高度为 0 的空单元格。

然后在我的代码中有一个名为 openSection 的变量,它保存当前打开的部分编号。

所以现在当我点击按钮时,当前部分关闭,新的部分打开。但是,有很多很多问题。例如,如果我向上滚动,单元格会不断变化。下一个问题是,如果我打开最后一个标题,我无法向上滚动到第一个标题,这真的很奇怪。

这是我点击按钮时的功能

func buttonTapped(_ sender: UIButton) {
DispatchQueue.main.async {
self.openSection = sender.tag
self.tableView.reloadData()
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
print("Button tapped")

}

这是我的 cellForRowAt 函数

    if openSection == indexPath.section {
print("cellForRowAt")
print(openSection)
let cell = tableView.dequeueReusableCell(withIdentifier: "treatmentCell", for: indexPath) as! TreatmentTableViewCell
cell.name.text = self.treatments[indexPath.section].treatments[indexPath.row].name
cell.price.text = self.treatments[indexPath.section].treatments[indexPath.row].price
cell.details.text = self.treatments[indexPath.section].treatments[indexPath.row].details
return cell

} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "emptyCell", for: indexPath)
cell.isHidden = true
return cell
}

这是我的 heightForRowAt 函数

    if openSection == indexPath.section {
print("heightForRowAt")
print(openSection)

return self.tableView.rowHeight
} else {
return 0
}

最佳答案

将您的代码更改为您点击的按钮

    self.openSection = sender.tag
let index = IndexPath(row: 0, section: openSection)

DispatchQueue.main.async {
self.tableView.reloadData()
self.tableView.reloadSections(IndexSet(integer: self.openSection), with: .automatic)
self.tableView.scrollToRow(at: index, at: .top, animated: true)
}

然后将部分中的行数更改为下面的代码

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
if openSection == section {
return self.treatments[openSection].treatments.count

} else {
return 0
}
}

关于ios - 正确隐藏和显示 TableViewCells?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164660/

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