【问题标题】:Expandable view within tableview表视图中的可扩展视图
【发布时间】:2020-12-27 14:05:00
【问题描述】:

我目前有一个表格视图控制器,它不仅包含单元格,还包含 UIView。现在,在那个 UIView 中有一个标签,它可能有超过 1 行带有 See More 按钮的文本。当我按下该按钮时,按钮本身将消失,并且 text.numberOfLines 设置为 0,因此视图应展开以显示所有文本。在我的情况下这似乎不起作用,但按钮确实消失了,文本只是继续到屏幕边缘,被截断而不是向下延伸。

但是,当整个 UIView 在表格视图控制器之外时,上面的功能会按预期工作,但在我将它们移动到原型单元格正上方的表格视图中之后就不行了。有什么想法吗?

【问题讨论】:

标签: ios swift uitableview uiview uilabel


【解决方案1】:

当你设置tableviewcell时,你必须用委托函数为行指定一个固定的高度

func tableView(_ tableView: UITableView,   heightForRowAt indexPath: IndexPath) {
 if expandedArray[indexPath.row] {
  return 60
 } else {
  return UITableViewAutomaticDimension
 }
}

然后保留一个布尔数组,以指定单元格是否扩展。主要将 bools 设置为 false 表示“未扩展”。 然后当用户按下“查看更多”按钮时,使数组中右下标的bool为真,表示单元格展开。并调用以下代码更新单元格。

tableView.beginUpdates()
tableView.reloadRows(at: [IndexPath(row: index, section: 0)], with: .automatic)
tableView.endUpdates()

这应该可以解决问题。 P.S:不要忘记在表格视图单元格中正确添加约束。

【讨论】:

  • 我说的 UIView 不是一个单元格,它是一个 UIView 我拖到了表格视图控制器中(不是单元格本身,在层次结构中看到)所以它是一个视图动态细胞。我不确定它是否包含在 indexPath 中。也许我误解了什么?
【解决方案2】:

使用UITableViewAutomaticDimension 并点击查看更多按钮重新加载您的单元格。

【讨论】:

  • 这是我在所有动态单元格之前拖入 tableview 控制器的 UIView。所以重新加载单元格不会重新加载有问题的 UIView。所以我所说的视图不是一个单元格。还是这样?
  • 然后尝试将其添加为标题/单元格,而不仅仅是 UIView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
相关资源
最近更新 更多