【问题标题】:Resizeable tableView cell with tableView inside it可调整大小的表格视图单元格,其中包含 tableView
【发布时间】:2020-02-07 14:08:40
【问题描述】:

我正在创建一个带有自定义单元格的 tableView,其中每个单元格可以具有不同类型的视图,范围从键值对标签、地图、按钮、列表等,具体取决于来自服务器的数据,并且这些视图将被填充因此。我已经为我将使用的每种视图类型创建了自定义 XIB

为此,我采用了一个 parentTableView,其单元格将有一个 childTableView,其每个单元格将是不同类型的视图,具体取决于来自服务器的数据

注意 - 呼叫和导航按钮和分配的标签不是单元格,而是添加在单元格顶部

现在我有两个问题:

  1. 如何使 childTableView 禁用滚动功能并占据其内容的完整高度(在最后一个 assignedTo 之后的图像中,有一个 priority 字段当前被剪裁,因为我已经定义了tableView 单元格的高度为 200 )

  2. parentTableView 的单元格的动态高度(与第一个问题几乎相似)

我尝试为parentTableView 设置rowHeightestimatedRowHeight,但它正在折叠单元格

parentTableView.rowHeight = UITableViewAutomaticDimension
parentTableView.estimatedRowHeight = 300.0

【问题讨论】:

  • 如果你使用带有特征部分和行的单个tableView会更好。
  • 尝试使用带有策略模式的单表视图,看看:github.com/sergiog90/Strategy-Pattern-iOS/tree/master/swift/…
  • @Setar 在您的情况下,我相信您可以为单元格使用这 3 种视图类型中的任何一种,但我的情况是,我可以将它们全部组合在一个单元格中,这些单元格将由部分分隔对于 childTableView
  • 我不明白为什么 parent 中的单元格不能是节标题视图,而 childTableView 不能是简单的行单元格。如果需要,您也可以在标题视图中应用策略模式。如果你想要一个 tableView 在另一个里面,并且只使用上面的 tableview 滚动,你必须指定内部 tableview 高度设置 num rows * row height。或者有两个卷轴,但我认为这不是一个好的成就
  • @Setar 您能否解释一下您在上面定义的方法为什么父级中的单元格不能是节标题视图?如您所见,我有 Job Card 有一个 Assigned 标签。现在你要我为那个 tableView 创建那个 Job Card 作为 sectionView(tableView 的标题部分)。好的。那么我将在哪里放置相同的_工作卡_中的不同单元格(如标签对、按钮对或地图)?因为这些行将在节标题之后之后,但我希望它们在卡片内(我现在已经制作了节标题视图)。你能帮帮我吗!

标签: ios swift uitableview


【解决方案1】:

删除parentTableView.rowHeight = UITableViewAutomaticDimension

并将您的单元格高度更新为计算出的cell.tableView.contentSize.height

参考:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { let cell = tableView.dequeueReusableCellWithIdentifier("identifier", forIndexPath: indexPath) as! CustomCell return cell.tableView.contentSize.height }

【讨论】:

  • 您是指单元格内部的 tableView 吗?这是一个正确的方法吗?
  • 而且在实际创建childTableView之前会调用parentTableView的heightForRowAt
  • 您应该在表格视图单元格自定义类中创建 childTableView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多