ios - 在运行时在 tableview 单元格中添加子视图并展开 tableview 单元格的最佳方法
问题描述
我有一个表格视图(附图片),其中有一个单元格及其状态(多个)。
当用户单击单元格时,它会展开显示状态。
我的问题是实现此功能的最佳方法是什么,我觉得我所拥有的不是一个好方法。
现在,当用户单击时,我在 didSelectRowAt 中设置了一个变量并重新加载单元格。当我重新加载单元格时,我检查变量并添加/删除子视图。
我在这样的stackview中添加子视图:-
for _ in 1...4 {
let view = ActivityFeedStatusView()
let constraint = NSLayoutConstraint(item: view, attribute: .height, relatedBy: .equal,
toItem: nil, attribute: .height, multiplier: 1.0, constant: 70.0)
NSLayoutConstraint.activate([constraint])
stackview.addArrangedSubview(view)
}
正如您所看到的,它会一直被添加cellForRowAt
将被称为 plus 它也给了我约束警告。
我愿意接受任何形式的反馈和建议,感谢您的阅读。
注意:此代码只是生成和显示视图的测试代码
解决方案
您的解决方案对我来说似乎很好:我的完整解决方案是: 1.通过委托方法 didSelectCellAtIndex 跟踪先前选定的单元格索引和当前选定的单元格索引。2.在以前的单元格索引和当前单元格索引处重新加载单元格。3.在单元格初始化代码中。如果在前面,则删除所有状态子视图。否则,在此单元格上添加状态子视图。4.手动计算高度并重新加载或使用自动布局进行自我高度约束。
推荐阅读
- aws-api-gateway - localstack 上的 API 网关
- c# - 进行 linq 查询的不同方法给出不同的结果
- c# - 从 windows 服务 c# 获取 Linux 服务器时间
- php - 在输入文本中输入姓名、电子邮件、用户名或出生日期时如何显示数据?
- python - 关于python正则表达式的一些事情
- php - 使用 eBay API 时在多个页面中显示结果
- c# - 使用列表和 for 循环索引超出范围
- java - 过滤掉 CompletableFuture 的重复项
- testing - 运行集成测试时出现 java.lang.NoSuchMethodError
- login - 节点 RED adminAuth 不工作