我有一个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在屏幕上时,重置有效(拉动刷新)。