gpt4 book ai didi

swift - 如何在 UITableView 中制作自动高度标题?

转载 作者:行者123 更新时间:2023-11-30 10:36:08 29 4
gpt4 key购买 nike

您好,我尝试使用 UITableView 进行展开/折叠,但我的标题有问题。我已经尝试了所有教程但不起作用。这是我的示例代码:

Screenshot

        import UIKit    import SafariServices    class AboutViewController: UIViewController {        @IBOutlet weak var tblView: UITableView!        var data = [            DataModal(headerName: "Apa itu Brevir?", subType: ["Brevir adalah bla..bla"], isExpandable: false),            DataModal(headerName: "Apa isi Brevir?", subType: ["Garis besarnya adalah bla..bla..blaa...bla..bla..blaa...bla..bla..blaa...bla..bla..blaa"], isExpandable: false),            DataModal(headerName: "Mengapa 7x Sehari?", subType: ["Tujuh Kali dalam bla..bla"], isExpandable: false),            DataModal(headerName: "Ibadat apa saja yang termaksud dalam 7x sehari tersebut?", subType: ["a. Ibadat Pembukaan", "b. Ibadat Pembukaan", "c. Ibadat Pembukaan", "d. Ibadat Pembukaan", "e. Ibadat Pembukaan", "f. Ibadat Pembukaan", "g. Ibadat Pembukaan"], isExpandable: false)]        override func viewDidLoad() {            super.viewDidLoad()            tblView.tableFooterView = UIView()        }    }    extension AboutViewController: UITableViewDataSource, UITableViewDelegate {        func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {            let headerView = HeaderView(frame: CGRect(x: 10, y: 10, width: tblView.frame.size.width - 20, height: 40))            headerView.delegate = self            headerView.secIndex = section            headerView.btn.setTitle(data[section].headerName, for: .normal)            return headerView        }        func numberOfSections(in tableView: UITableView) -> Int {            return data.count        }        func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {            return 44        }        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {            if data[section].isExpandable {                return data[section].subType.count            } else {                return Int(UITableView.automaticDimension)            }        }        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {            let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)            cell.textLabel?.numberOfLines = 0            cell.textLabel?.text = data[indexPath.section].subType[indexPath.row]            return cell        }        override func viewWillAppear(_ animated: Bool) {            tblView.estimatedSectionHeaderHeight = 40            tblView.sectionHeaderHeight = UITableView.automaticDimension        }    }    extension AboutViewController: HeaderDelegate {        func callHeader(idx: Int) {            data[idx].isExpandable = !data[idx].isExpandable            tblView.reloadSections([idx], with: .automatic)        }    }

最佳答案

由于您使用的是按钮,因此它不会自动展开。

改用标签并设置其numberOfLines = 0

稍后在其上添加按钮。

还实现 TableView 部分委托(delegate)/数据源方法:

heightForHeaderInSection return 50 //minimum height

estimateHeightForHeaderSection return UITableView.automaticDimension // automatic height

关于swift - 如何在 UITableView 中制作自动高度标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994049/

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