Swift tableView.reloadRows删除单元格

时间:2017-02-03 03:53:52

标签: ios iphone swift uitableview swift3

要求;

我有一个静态UITableView,当我点击其中一个单元格时,我正在尝试打开pickerview。我使用heightForRowAt更改了尺寸,因此当点击cell时,我需要reload以便尺寸发生变化。如果我使用reloadData()它完美无缺(我想使用reloadRows,所以我可以添加动画

问题:

当我尝试reloadRows(at..., with: .automatic)时,行就会消失。如果reloadRows中的viewWillAppear没有任何变化,则该行不会消失。

代码:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print(indexPath)
    if colorCelllExpandedIndex != nil{
        let prev = colorCelllExpandedIndex
        colorCelllExpandedIndex = nil
        tableView.reloadRows(at: [prev!], with: .automatic)
        //tableView.reloadData()
    } else {
        colorCelllExpandedIndex = indexPath
        colorCell.frame.size.height = CGFloat(colorCellExpandedHeight)
        tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
    }

}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    if indexPath == colorCelllExpandedIndex {
        return CGFloat(colorCellExpandedHeight)
    } else {
        if indexPath.row == 1 {
            return CGFloat(colorCellRegularHeight)
        }
        return UITableViewAutomaticDimension
    }
}

屏幕图片:

before and after clicking the color button

How it looks like if I use reloadData

1 个答案:

答案 0 :(得分:2)

使用静态UITableView时,$this->mail->AddReplyTo("youraccount@gmail.com","Your name"); 等函数似乎存在一些问题,在SO question 中没有解析时存在类似的问题。

然而,我能够通过实现下一个功能来更新单元格高度:

reloadRows(at:with:)

您可以采取的方法如下:

tableView.beginUpdates()
tableView.endUpdates()

这是受another SO question中关于在静态表视图中隐藏单元格的答案之一的启发。