微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决嵌套在 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 举报,一经查实,本站将立刻删除。