UITableViewCell改变高度

时间:2016-03-15 19:41:20

标签: ios swift uitableview

我想在表格视图中更改已触摸行的高度(因此它会展开):

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let cell = tableView.cellForRowAtIndexPath(indexPath) as! CustomTableViewCell
    if let currentSelection = self.currentSelection {
        if currentSelection == indexPath {
            tableView.deselectRowAtIndexPath(indexPath, animated: true)
            self.currentSelection = nil
            tableView.beginUpdates()
            tableView.endUpdates()
            setupAnimation(cell, hide: true) //Custom animation inside the cell
        }
    } else {
        self.currentSelection = indexPath
        tableView.beginUpdates()
        tableView.endUpdates()
        setupAnimation(cell, hide: false) //Custom animation inside the cell
    }
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if let currentSelection = self.currentSelection {
        if indexPath == currentSelection {
            return 80.0
        }
    }
    return 50.0
}

这是有效的 - 当我点击该行时,高度变为80.0,当我再次点击它时,高度变回50.0。问题是我的分隔符没有移动。

不仅没有移动,而且当我点击单元格时:

  1. 高度扩展 - >
  2. 螺纹细胞分离器停留在同一位置 - >
  3. 上述单元格的分隔符消失
  4. 我做错了什么或我在这里错过了什么?

    修改

    我试图覆盖layoutSubviews方法并忘记了 - 我没有在其中调用super.layoutSubviews()。现在所选单元格的分隔符正在向下移动,但我仍然遇到上面单元格的分隔符消失的问题

2 个答案:

答案 0 :(得分:2)

尝试重新加载该单元格

tableView.beginUpdates()
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) //try other animations
tableView.endUpdates()

答案 1 :(得分:0)

如果你不必选择你的小区,那么这个帖子就应该是答案:

UITableView separator line disappears when selecting cells in iOS7