gpt4 book ai didi

ios - 可扩展单元格不会扩展

转载 作者:行者123 更新时间:2023-11-28 13:40:24 24 4
gpt4 key购买 nike

我创建了两个可展开的单元格,但是当我点击第二个单元格时它没有展开

我在谷歌上搜索了很多方法,但这个似乎是最短和最简单的方法。

private var dateCellExpanded: Bool = false

override func viewDidLoad() {
super.viewDidLoad()
// For removing the extra empty spaces of TableView below
self.tableView!.tableFooterView = UIView()
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
if dateCellExpanded {
dateCellExpanded = false
} else {
dateCellExpanded = true
}
tableView.beginUpdates()
tableView.endUpdates()
}
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
if dateCellExpanded {
return 250
} else {
return 40
}
}
return 40
}

我希望能够添加任意数量的单元格并让它们在点击时扩展,但只有第一个单元格可以。 Here's what happens

最佳答案

它只适用于第一行,因为您使用 if indexPath.row == 0 将它限制在第一行。

您需要一组 Bool 而不是单个 Bool,因为您需要跟踪所有行的状态。

只需将数组初始化为包含行数的 false 值数组。在下面相应地设置 NUMBER_OF_ROWS

然后,选择一个单元格时,您可以翻转(或 toggle())该行的 bool 值并要求表进行更新。

private var isCellExpanded: [Bool] = Array(repeating: false, count: NUMBER_OF_ROWS)

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
isCellExpanded[indexPath.row].toggle()
tableView.beginUpdates()
tableView.endUpdates()
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if isCellExpanded[indexPath.row] {
return 250
} else {
return 40
}
}

请注意,这假设您只使用一个部分。否则,您必须将数据结构 [Bool] 调整为 [[Bool]]

关于ios - 可扩展单元格不会扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56115334/

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