在下面的代码中,是一个函数,当点击一个按钮时,该函数隐藏UITableView Cell元素。如何根据剩余的可见元素调整像元高度?每个单元格都是一行。
我尝试使用自动UITableView.automaticDimension来调整单元格的大小,但这没用。
这是我对自定义单元格应如何工作的看法:创建后,该单元格将显示其全部内容。轻按某个按钮时,将隐藏按钮下方的单元格的所有元素,仅保留按钮和与按钮相同高度级别的元素,并将其余单元格高度重新调整为可见元素。然后,再次点击该按钮后,将再次以适当的单元格大小显示该单元格的全部内容。
func customCellDidTapCollapse(_ cell: customCell) {
if collapsed {
cell.item1.isHidden = false
cell.item2.isHidden = false
cell.item3.isHidden = false
cell.item4.isHidden = false
collapsed = false
} else {
cell.item1.isHidden = true
cell.item2.isHidden = true
cell.item3.isHidden = true
cell.item4.isHidden = true
collapsed = true
}
}
答案 0 :(得分:0)
我认为您可以使用tableView(_:heightForRowAt :)方法并根据“已折叠”布尔值返回0或其他非零值。
在此处查看更多信息:https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614998-tableview
答案 1 :(得分:0)
我的解决方法是:
在tableViewDelegation中,覆盖功能
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if data[indexPath.row].opened {
return 150
} else {
return 50
}
}
覆盖tableViewDelegate(_:didSelectRowAt:)
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//If last opened cell is different than selected now, close the last opened cell
if lastOpened != indexPath.row {
data[lastOpened].opened = false
}
//Hold the last opened cell index
lastOpened = indexPath.row
let isOpen = data[indexPath.row].opened
//Open/close
data[indexPath.row].opened = isOpen ? false : true
myTable.reloadData()
}