0

我有一个 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 行

首次加载的 TableView

第 0 行展开

第 0 行展开

第 21 行是重置表格的保存单元格。这应该缩小单元格。当单元格 0 出现在屏幕上时,重置工作(拉动刷新)。

4

0 回答 0