展开和折叠表格视图中的单元格

Posted

技术标签:

【中文标题】展开和折叠表格视图中的单元格【英文标题】:Expand and collapse cells in tableview 【发布时间】:2021-07-05 08:53:19 【问题描述】:

我有一个表格视图。一些单元格包含图像,其他文本。

我希望能够折叠和展开单元格。为了能够做到这一点,我做了以下事情:

我创建了一个变量isExpanded = true 在 cellForRowAt 我检查单元格是否包含文本,然后...

 if textIsExpanded 
               
  cell.textLabel?.sizeToFit()
  cell.textLabel?.numberOfLines = 0
 

这样单元格就可以和里面的文本一样高了。

在操作中,我切换textIsExpanded 并重新加载表格:

 textIsExpanded.toggle()
 table.reloadData()

此过程完美适用于仅包含文本的表格视图。

可行的方法是扩展 if 语句并在错误分支调用中:

 cell.textLabel?.invalidateIntrinsicContentSize()
 cell.textLabel?.layoutIfNeeded()     

但是当我切换变量时这不起作用,这只在启动时起作用。

如何折叠和展开表格视图中的单元格?

【问题讨论】:

可展开/可折叠的 tableView 应该是 tableView 的标题。那么 tableView 的 cellForRowAt 委托方法是如何发挥作用的呢? 我不需要可扩展的表格视图,我需要一个可扩展的单元格这就是我使用 cellForRowAt 的原因。 【参考方案1】:

使用两个视图(上视图和下视图)的堆栈创建您的单元格,向您的模型 isExpandable 添加一个 Bool 键,该键在 didSelect 上触发和更改并选中此选项以隐藏或显示您的视图,或者将文本保留为text 或 TextView 由你决定。

【讨论】:

以上是关于展开和折叠表格视图中的单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用显示/减少按钮展开/折叠表格视图单元格

展开和折叠所有表格视图单元格

我们如何快速在表格视图底部添加展开和折叠单元格

通过使用约束自行调整大小来展开和折叠 TableView 单元格

SWIFT:从自定义单元格中的 UIswitch 展开/折叠自定义单元格

Accordion 表格单元格 - 用于展开和折叠 ios