首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xcode - Swift -如何获得动态表格视图,以便每个单元格在被选中时都可以展开并显示更多信息

xcode - Swift -如何获得动态表格视图,以便每个单元格在被选中时都可以展开并显示更多信息
EN

Stack Overflow用户
提问于 2018-02-25 11:12:35
回答 3查看 93关注 0票数 0

因此,我可以找到一些基本信息,了解如何对静态单元执行类似的操作。我还可以找到有关更改单元格高度的信息,但我真正想要的是当单元格被选中时,先前隐藏/覆盖的单元格的一部分。

代码语言:javascript
复制
________________________________
|                               |
|       This displays normally  |
|                               |
________________________________
|                               |
|       This displays normally  |
|                               |
________________________________
|                               |
|       This displays normally  |
|                               |
________________________________

如果它通常看起来像这样,当第二个单元格被选中时,它应该看起来像这样:

代码语言:javascript
复制
________________________________
|                               |
|       This displays normally  |
|                               |
________________________________
|                               |
|       This displays normally  |
|                               |
________________________________
|                               |
|             This              |
|             only              |
|           displays            |
|             when              |
|             cell (above)      |
|              is               |
|           selected            |
________________________________
|                               |
|       This displays normally  |
|                               |
________________________________

有哪些方法可以做到这一点?当单元格被选中时,我应该在下面插入一个单元格吗?或者我应该把这两个都当作一个细胞的一部分?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2018-02-25 13:38:53

您可以在单元格中使用另一张表。并在数组的每个字典中插入标志值。然后,当你在tableview上改变这个标志值后,无论你用来选择什么,都可以选择或者点击按钮。更改此值后,在表视图单元格中写入另一个条件到插入到数组的字典中的相关标志。然后,根据行中单元格的内容大小给出内部表格视图的高度。你做的另一件事是在主单元格上获取内部表格视图的高度出口,以便我们在cellforrow方法中定义内部表格视图高度。每件事都取决于你的标志,它被嵌入到数组的每个字典中,所以根据你的需要来管理数组。我已经做了我的许多项目,如果你不能理解,那么你可以联系我。

票数 1
EN

Stack Overflow用户

发布于 2018-02-25 11:25:53

我认为你最好的选择就是对表格视图行高度使用自动尺寸标注,并将单元格设置为能够默认显示小视图,但也能够显示展开的视图。当展开发生时,它应该重新加载单元格以自动计算展开视图的高度。

票数 0
EN

Stack Overflow用户

发布于 2018-02-25 11:33:48

在这种简单的情况下,插入辅助单元太麻烦了,而且展开动画看起来也不会很棒。

如果您不使用动态测量的单元格高度(如基于约束的单元格高度,而不是表委托调用),则可以通过在UITableView上调用beginUpdates,在委托中为特定行返回与tableView(heightForRowAt:)不同的高度,并在表上调用endUpdates来实现这一点。我已经多次使用这种方法,并取得了很大的成功。除了使用开始/结束更新之外,您还可以调用reloadRows(at:with:),它可能看起来更好,也可能看起来不好,这取决于您的喜好和代码偏好。

我没有用动态测量单元格做到这一点,但我假设你应该能够在单元格主视图上添加一个高度约束(我假设它已经有了填充单元格的约束)。然后,当你想展开单元格时,你可以在UITableView上调用beginUpdates,增加高度约束(通过cellForRow(at:)方法获得单元格实例),在单元格上调用layoutIfNeeded,在表格上调用endUpdates。

请记住,当您来回滚动表格视图时,必须恢复展开状态,因此您需要记住以某种方式展开了哪些单元格。这最好使用“视图模型”来完成,例如,使用布尔值声明单元格是否展开,并使用该布尔值在委托中返回适当的单元格高度或在单元格设置中更改约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48969863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档