我有一个 UITableViewCell 自定义单元格,只需按一下按钮,它的高度就会扩展和收缩。如果我在单元格处于视图中时重置表格,则单元格收缩(到正确的高度)但是如果我在单元格不在视野中时重置单元格,则单元格不会收缩。我找不到有关自定义单元格的视图控制的任何信息。我正在使用高度来控制单元格的扩展。
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 0 {
if expandedIndexPaths.contains(indexPath) {
bMExpandedCell.expanded = true
} else {
bMExpandedCell.expanded = false
}
return expandedIndexPaths.contains(indexPath) ? 207 : 88
} else if indexPath.row == 1 {
if expandedIndexPaths.contains(indexPath) {
painExpandedCell.expanded = true
} else {
painExpandedCell.expanded = false
}
return expandedIndexPaths.contains(indexPath) ? 346 : 88
} else if indexPath.row == 20 {
let height = CGFloat(136.0)
return height
} else {
let cellHeight = CGFloat(88.0)
return cellHeight
}
}
在自定义单元格中,按下一个按钮,该按钮通过委托激活。它适用于所有情况,除非单元格超出范围(即在第 20 行的表格末尾重置)并且有问题的单元格位于单元格 0 和 1 中。
func painCellTapped(cell: PainTableViewCell) {
if let indexPath = tableView.indexPathForCell(cell) {
if expandedIndexPaths.contains(indexPath) {
expandedIndexPaths.removeAtIndex(expandedIndexPaths.indexOf(indexPath)!)
} else {
expandedIndexPaths.append(indexPath)
}
// tableView.reloadRowsAtIndexPaths([indexPath!], withRowAnimation: .Fade)
tableView.beginUpdates()
tableView.endUpdates()
}
}
加载时的第 0 行和第 1 行
第 0 行展开
第 21 行是重置表格的保存单元格。这应该缩小单元格。当单元格 0 出现在屏幕上时,重置工作(拉动刷新)。