当滚动离开屏幕时,我的自定义单元格处于展开状态,按钮被隐藏,这不应该是这种情况。在标签下面,再次向上滚动时没有显示两个按钮。我猜在信元出队后需要做些什么。任何帮助都将不胜感激。

我有一个自定义单元格,其中行的初始高度是80,单击单元格后它会扩展到120。默认情况下,我会像这样隐藏按钮:
@IBOutlet weak var followButton: UIButton! {
didSet {
followButton.isHidden = true
}
}
@IBOutlet weak var blockButton: UIButton! {
didSet {
blockButton.isHidden = true
}
}我有一个var expandedIndexSet : IndexSet = [],它可以跟踪哪个单元格已经展开。下面的方法相应地更新indexSet。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
tableView.beginUpdates()
let cell = tableView.cellForRow(at: indexPath) as! StackOverflowTableViewCell
if(expandedIndexSet.contains(indexPath.row)){
expandedIndexSet.remove(indexPath.row)
} else {
expandedIndexSet.insert(indexPath.row)
}
cell.blockButton.isHidden = !cell.blockButton.isHidden
cell.followButton.isHidden = !cell.followButton.isHidden
tableView.endUpdates()
}高度的调整是这样的:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if expandedIndexSet.contains(indexPath.row) {
return 140
}
else {
return 80
}
}发布于 2020-06-01 05:18:23
下面的代码片段可能会有帮助,请尝试。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = ....
cell.followButton.isHidden = !expandedIndexSet.contains(indexPath.row)
cell.blockButton.isHidden = cell.followButton.isHidden
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
// Update View Model
if(expandedIndexSet.contains(indexPath.row)){
expandedIndexSet.remove(indexPath.row)
} else {
expandedIndexSet.insert(indexPath.row)
}
// Table View Animation
tableView.beginUpdates()
tableView.reloadRows(at: indexPaths, with: .automatic)
tableView.endUpdates()
}https://stackoverflow.com/questions/62119790
复制相似问题