Swift:自定义UITableViewCell超出视图而不缩小

时间:2016-05-06 12:47:13

标签: ios swift uitableview custom-cell heightforrowatindexpath

我有一个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 as first loaded

第0行展开

Row 0 expanded

第21行是重置表格的保存单元格。这应该缩小细胞。 单元格0在屏幕上时,重置有效(拉动刷新)。

0 个答案:

没有答案