gpt4 book ai didi

ios - 具有动态单元格高度的 UITableViewCell 内的 UITableView

转载 作者:可可西里 更新时间:2023-11-01 03:08:24 26 4
gpt4 key购买 nike

我有一个动态的项目列表,每个项目都可以有不同的模板/布局(和高度)。其中一种项目类型可以有一个内部项目列表供您选择,通常有 5-6 行,每行都有不同的高度。

如果我尝试进一步描述它,在我的场景中,我在另一个 TableView (#master) 的 TableView 单元 (#master-cell) 中有一个 TableView (#slave)。此外,我的#slave tableview 中的单元格(#slave-cell)也可以有不同的高度。所以我需要布置我的#slave,让#master 自动计算和更新它的大小。

enter image description here

我的内表 (#slave) 有问题。在自动布局的情况下,为了适应所有的单元格空间,与 UILabel 或其他控件不同,表格将被折叠。所以我在这里需要的是获取#slave 表的预计大小并设置#slave 的高度 = #slave 的内容高度。

我找到了 similar post如果所有行都具有相同的高度,但我使用的是具有动态高度的自定义行,它会起作用,所以 tableView.contentSize.Height 给我无效的结果(基本上只是乘以 rowNumbers * estimatedRowHeight,你可以在屏幕截图上看到它,master item # 3 有 4 个内部单元)。即使在调用 #slave.reloadData 之后,我也无法获得该大小。

构建这种 UI 的正确方法是什么?

Source code附有测试项目 (Xamarin.iOS)

最佳答案

我几天前刚遇到同样的问题,并试图解决它。

#master-cell 像 childViewController 一样工作,它是 #slave TableViewController 的 delegate datasource。但是你不能在 UITableViewcell 中有 childViewController。

自定义 UITableViewCell 以保存必要的属性并充当#slave TableViewController 的delegate datasource,并配置#slave-cell 的高度和数据。

真正的问题是#master-cell 的高度,

  1. 如果你的数据比较简单,静态的,可以提前计算高度,返回到ViewController的func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat方法中.
  2. 否则,向#master-cell 添加一个方法,该方法在设置其属性时返回整个单元格的高度。并创建一个代理#master-cell 来计算高度并返回它:

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    let cell = CustomUITableViewCell();
    let model = self.getModel(indexPath)
    cell.model = model
    let height = cell.requiredHeight()
    return height;
    }

    它既复杂又昂贵,但它确实有效。

关于ios - 具有动态单元格高度的 UITableViewCell 内的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36806297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com