如何将自定义单元格放入另一个自定义单元格?
Posted
技术标签:
【中文标题】如何将自定义单元格放入另一个自定义单元格?【英文标题】:How to put a custom cell into another custom cell? 【发布时间】:2019-04-21 23:02:31 【问题描述】:现在我有一个 PostsController,它是一个 TableViewController。它包含 PostCell。在某个时候,我想将另一个 PostCell 放入一个 PostCell。我的意思是在这个 PostCell 里面,还有一个 PostCell。我应该如何使用 Swift 中的代码来做到这一点?
【问题讨论】:
你为什么要把一个单元格放在另一个单元格中? 因为我想在一个人转发另一个帖子时显示转发。 您不会将一个单元格放在另一个单元格中。如果需要,将单元格显示为另一行或编写 PostCell 类以显示其他数据。但不要尝试嵌套单元格。 我相信技术上,你不能。 UITableViewCells 是 UITableView 的一部分。我什至会犹豫将 UITableView 嵌套在 UITableViewCell 中。如果您深入研究表格视图的工作原理,它会重用其单元格来有效地处理内存。你建议如何执行tableView(cellForRowAt:)
?如何“塑造”表格视图的数据源?
这将违反 ios 性能准则,并可能被苹果拒绝。您能否发布您尝试实现的设计的屏幕截图,因为可能有更简单的解决方案。
【参考方案1】:
让一个单元格包含另一个单元格是不可取的。即使你可以一起破解它,也会有很大的意外行为风险。
话虽如此,我会考虑几个选项。
如果可能,从单节多行布局转变为多节单行布局。当您需要转发时,它们可以是原始帖子部分中的附加行。
例如post 1是index path (0, 0),post 2是index path (1, 0),post 2的repost是index path (1, 1),post 3是index path (2, 0) )…
它会将您锁定在部分布局中,但您不必更改PostCell
。
通过子类化UIView
而不是UITableViewCell
,将PostCell
转换为PostView
。有一个可以容纳 1 个或多个 PostView
实例的视图容器单元。这应该是获得您所要求的内容的快速方法,并且仍然为您提供一些布局灵活性
将PostCell
变成PostViewController
。有一个视图控制器容器单元,可以容纳您的后视图控制器。这有点困难,但可以让您在创建布局方面拥有最大的灵活性。
【讨论】:
是的,这是一个 AB 问题。答案是“不要那样做”。很好地解释了原因并提供了其他选择。 (已投票)以上是关于如何将自定义单元格放入另一个自定义单元格?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中复制/复制自定义 collectionview 单元格?
如何将自定义样式添加到 Angular Material Table 单元格的一小部分?