当我的自定义单元格在展开状态下滚动到屏幕外时,按钮被隐藏了,而这是不应该的。在标签下面,当再次向上滚动时,2个按钮没有出现。我猜测需要在单元格被删除后发生一些事情。任何帮助都将是非常感激的。
我有一个自定义单元格,最初一行的高度是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
}
}
下面的代码段可能会有帮助,请试一试。
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()
}