要求;
我有一个静态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
}
}
屏幕图片:
答案 0 :(得分:2)
使用静态UITableView时,$this->mail->AddReplyTo("youraccount@gmail.com","Your name");
等函数似乎存在一些问题,在SO question 中没有解析时存在类似的问题。
然而,我能够通过实现下一个功能来更新单元格高度:
reloadRows(at:with:)
您可以采取的方法如下:
tableView.beginUpdates()
tableView.endUpdates()
这是受another SO question中关于在静态表视图中隐藏单元格的答案之一的启发。