ios - 如何使表格视图单元格展开和折叠
问题描述
我有三个表格视图单元格,选择时到期日期单元格应扩展到 200,未选中时应扩展到 44(默认)。由于某种原因,它不会扩展。
我不能在 AutoLayout 中执行此操作,因为它必须更改,所以我尝试使用 switch 语句,当它位于特定索引路径上时,它应该扩展但它无法工作。
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let normalCellHeight = CGFloat(44)
let largeCellHeight = CGFloat(200)
switch(indexPath) {
case [1,0]: // Due Date Cell
return isPickerHidden ? normalCellHeight : largeCellHeight
case [2,0]: // Notes Cell
return largeCellHeight
default: return normalCellHeight
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch(indexPath) {
case [2,0]:
isPickerHidden = !isPickerHidden
dueDateLabel.textColor = isPickerHidden ? .black : tableView.tintColor
tableView.beginUpdates()
tableView.endUpdates()
default: break
}
}
预期结果:点击截止日期单元格,单元格展开以显示日期选择器
实际结果:单元格突出显示,但未展开。
解决方案
尝试在didSelectRow
里面重新加载单元格beginUpdates
和endUpdates
。看看下面的示例代码。根据您的需要选择行 realod 动画。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch(indexPath) {
case [2,0]:
isPickerHidden = !isPickerHidden
dueDateLabel.textColor = isPickerHidden ? .black : tableView.tintColor
tableView.beginUpdates()
tableView.reloadRows(at: [indexPath], with: .none)
tableView.endUpdates()
default: break
}
}
推荐阅读
- c# - 我想在不提供任何名称的情况下将工作表添加到 excel 文件中
- python - Python kivy 从 kivy 文件中的 *.py 文件中获取标签
- javascript - 无法在反应路由器中获取未定义或空引用的属性“位置”
- amazon-web-services - AWS:请求中包含的安全令牌无效
- javascript - 复杂数组的 Javascript 循环与 C 循环
- html - 添加 Html 标签使我的段落翻倍
- angular - Angular pass data to an imported module
- python - After scaling or normalizing values the graph is changed Python Sklearn pandas
- android - Migrate Intentservices to Workmanager
- django - How to use NTML Authentication in Angular 4 - Django REST project