我正在尝试执行以下逻辑:如果cell1被点击,它应该扩展它的高度。然后,如果cell2被点击,它应该扩展它的高度并将cell1返回到它原来的高度,这样只能扩展一个单元格。
,这是我当前的代码,但是它扩展了所有的单元格,没有做我想做的事情:
@IBOutlet weak var poemasTableView: UITableView!
var isExpanded = true
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if isExpanded == true {
return 55
} else {
return 240
}
}我的TableViewCell有一个按钮,我要添加这个函数:
@objc func cambiarTamaño() {
poemasTableView.beginUpdates()
isExpanded = !isExpanded
poemasTableView.endUpdates()
}我怎么才能解决这个问题?
发布于 2021-03-04 17:54:32
您需要跟踪选择了哪个单元格,然后在heightForRowAt中检查该单元格是否是选定的单元格。
var selected: IndexPath?
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == selected?.row {
return 240
} else {
return 55
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if selected == indexPath {
selected = nil
} else {
selected = indexPath
}
tableView.reloadData()
}看起来您想要使用表视图单元格中的一个按钮来实现这一点,因此您需要将indexPath传递到单元格中,然后当按下该按钮时,将indexPath传递回表视图类以更新selected变量。
https://stackoverflow.com/questions/66479512
复制相似问题