TableView 自动标注Tableview 内部Tableview

Pra*_*iya 6 uitableview ios swift uitableviewautomaticdimension

我有用于显示客户下的食品订单的 Tableview。其中包含 Horizo​​ntal UIStackview。在UIStackView

In UIStackview很少有一个/两个内衬标签,一个UITableView用于显示订单项。内部 tableview 具有固定的高度常量(大于或等于 + 750 优先级)并且将随着内容大小而改变。高度和滚动禁用。

内部 tableview 有两个标签。高度是自动尺寸

我希望主 tableview 单元格高度应根据内部 tableview 项目自动增加。所以我申请主tableview

    self.tblOrders.rowHeight = UITableViewAutomaticDimension
    self.tblOrders.estimatedRowHeight = 45
Run Code Online (Sandbox Code Playgroud)

和在 tableview 单元格子类中

override func awakeFromNib() {
    super.awakeFromNib()
    self.tblOrderMaster.dataSource = self
    self.tblOrderMaster.delegate = self

    self.tblOrderMaster.estimatedRowHeight = 45
    self.tblOrderMaster.rowHeight = UITableViewAutomaticDimension
    self.selectionStyle = .none
    self.layoutIfNeeded()

    self.tblOrderMaster.isScrollEnabled = false

}
Run Code Online (Sandbox Code Playgroud)

内部 tableview 数据源数组

var orderData:[ODOrderDataMaster] = [] {
        didSet {
            self.tblOrderMaster.reloadData()
            self.layoutIfNeeded()
            self.const_Height_tblOrderMaster.constant = self.tblOrderMaster.contentSize.height
            self.layoutIfNeeded()

        }
    }
Run Code Online (Sandbox Code Playgroud)

:当我滚动主 tableview 时,它没有按照子项正确调整大小。而最初它显示正确。

我几乎尝试了所有的东西,比如 layoutIfNeeded。布局子视图。设置需要显示。

我也实现了 willDisplayCell 但没有成功。

我认为问题是当我重新加载内部 tableview 时。完成重新加载后,我如何通知主 tableview 以及如何更新内部 tableview 的高度常量

如果有人需要更多信息,请告诉我。

我感谢任何帮助或建议

Pra*_*iya 1

我尝试了几乎所有可能的解决方案,但每个解决方案都有一些问题。所以我找到了另一种解决方法来解决这个问题,它不能被称为完美的解决方案,但它对我有用

在表格视图单元格中,我添加了一个隐藏标签 ,即顶部:0、底部:0、左侧:0 和右侧:0

在此输入图像描述

现在

    // This is temp label which help to calulate height to tableview
    if let orderMaster = restObj.orderDataMaster {

        var tempText = ""
        for orderMasterObject in orderMaster {

            tempText += (orderMasterObject.item?.name ?? "") + "\n" + "  "

            if let subItems = orderMasterObject.masterSubitem {

                let result = subItems.reduce("", { (result, subItem) -> String in
                    return result +  (subItem.subitem?.name ?? "") + ","
                })
                tempText += result + "\n" + "  "

            }
            tempText += "\n"
        }
        cell.lblTemp.text = tempText
    }

    self.view.layoutIfNeeded()
    cell.setNeedsLayout()
    cell.delegate = self 
Run Code Online (Sandbox Code Playgroud)

这里所做的是,内部表格视图的单元格具有根据文本增长的标签。因此,在我的情况下,该临时标签具有相同的文本 ( masterSubitem),简而言之,我已在该标签中复制了内部表格视图单元格,因为我们已提供了所有四个标签约束,因此当它增长时,我们的表格视图单元格将随之增长。

希望这对面临同样问题的人有帮助如果你们中的任何人可以发布另一个工作解决方案,我会很乐意接受:)