嵌套在 UITableViewCell 中的 UITableViewCell 的自动维度

问题描述

因为我已经使用了 UITableView 的标题标题,所以我在另一个 tableView 中实现了一个 tableView,以便完全按照我的需要显示我的数据。我设置了固定的行高,但主单元格之间的间隙很大

enter image description here

这是我的数据样本:

var meals = Array(["1 - Starter": ["Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,when an unkNown printer took a galley of type and scrambled it to make a type specimen book.","Sushi","Thon"],"2 - Main": ["Steak","Frites","Pizza","Pâtes"],"3 - Desert": ["Cream","Coffee"]])

这里是主tableView的代码

extension ViewController: UITableViewDataSource {
    
    func numberOfSections(in tableView: UITableView) -> Int {
        meals.count
    }
    
    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "MainTableViewCell",for: indexPath) as? MainTableViewCell else {
            return UITableViewCell()
        }
        let dishes = meals[indexPath.section].value
        cell.updateCellWith(dishes: dishes)
        return cell
    }
}

以及我在主 XIB 单元格中编写的 Detail TableView 的代码

class MainTableViewCell: UITableViewCell {


@IBOutlet weak var detailTableVIew: UITableView!
var dishes: [String]?

override func awakeFromNib() {
    super.awakeFromNib()
    detailTableVIew.dataSource = self
    detailTableVIew.register(UINib(nibName: "DetailTableViewCell",bundle: nil),forCellReuseIdentifier: "DetailTableViewCell")
    detailTableVIew.tableFooterView = UIView()
    detailTableVIew.estimatedRowHeight = 40
    detailTableVIew.rowHeight = UITableView.automaticDimension
}

}
extension MainTableViewCell: UITableViewDataSource {


func updateCellWith(dishes: [String]) {
    self.dishes = dishes
    detailTableVIew.reloadData()
}

func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    return dishes?.count ?? 0
}

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "DetailTableViewCell",for: indexPath) as? DetailTableViewCell else {
        return UITableViewCell()
    }
    cell.detailMealLabel.text = self.dishes?[indexPath.row] ?? ""
    return cell
}

}

当我详细了解这些属性时,XIB 单元格以及主 tableVIew 以获得动态行高:

detailTableVIew.estimatedRowHeight = XXX
detailTableVIew.rowHeight = UITableView.automaticDimension

我还将 UILabel 的行数设置为零。

我收到了 XCode 的警告:

[警告] 仅警告一次:检测到约束的情况 模棱两可地建议表格视图单元格内容的高度为零 看法。我们正在考虑意外崩溃并使用标准 高度代替。单元格:>

我的用户界面看起来像那样

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)