ios - 发生单元格内容交互时更新 TableView 单元格高度
问题描述
我有一个UITableView
包含许多单元格的。在下面的示例中,这两行各包含一个UICollectionView
管理标签。初始加载工作正常,并tableView
根据 UICollectionView 高度正确调整行大小。
在该viewDidLoad
方法中,我为 设置了以下配置tableView
:
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = UITableView.automaticDimension
然后,在viewDidAppear
方法中,我要求更新tableView
如下:
override func viewDidAppear(_ animated: Bool) {
tableView.beginUpdates()
tableView.endUpdates()
}
问题1:这种工作,除了它动画tableView行高的增加。有没有办法只在初始负载上解决这个问题?
第二个问题是,如果用户与内容交互并删除其中一个,即使collectionView
调整大小,更新的内容大小也不会触发tableView
行更新其高度,如下面的屏幕截图所示:
可能是因为它在 a 内,tableView
cell
因为通常情况下,它会collectionView
自动调整大小。collectionView
当位于 a 之外时,请参阅下面的屏幕截图tableView
。
如果我滚动tableView
,则该行将作为双端队列/重用过程的一部分正确调整大小。见下文:
我认为问题的一部分是collectionView
当它在里面时的布局约束tableViewCell
是它被固定在边缘tableViewCell
但除非我这样做,否则它不能正确显示所以我迷路了......
问题 2:如何根据其内容的更改修复 tableView 行高调整大小?
解决方案
问题#1 -viewDidAppear
使用tableView.reloadData()
而不是beginUpdates
.
问题#2 -tableView.reloadRows()
当用户与UICollectionView
.
推荐阅读
- java - 如何解决这个 Treeset 程序?
- unicode - 如何在 Windows 上使用笔记本电脑键盘打字?
- ruby-on-rails - #update 的 RSPEC 测试无法更新某些参数
- mysql - 两个表之间的条件语句
- android - Android - 这不能改变 ActionBar 中搜索图标的颜色吗?
- sql - 如何在 Sqlserver 中加入 3 个表
- node.js - 如何在一行 shell 命令中运行几个 npm 脚本?
- python - 在画布上定位标签
- swift - 如何使用 SwiftUI 以编程方式转换视图?
- c# - 无法使用 ID、XPath 和 CSS 选择器定位元素