gpt4 book ai didi

ios - 节和行未正确显示在UITableView Swift中

转载 作者:行者123 更新时间:2023-12-01 19:35:51 24 4
gpt4 key购买 nike

我正在尝试在UITableView中实现节和行,但是由于嵌套的JSON模型结构,我无法成功。它总是只打印first section title。我正在使用Codable方法,并且无法更改模型结构。

如何在tableView中实现节和行?任何指导或帮助将不胜感激。我真的为此感到挣扎。

我需要在tableView中显示的

  • 部分为title和行textField-请参阅JSON。
  • 附加的
  • 屏幕截图,仅打印一张section title

  • 模型:
    struct SectionList : Codable {

    let title : String?
    var items : [Item]?

    }

    struct Item : Codable {

    let actionType : Int?
    var textField : String?
    let pickList: [SectionList]?
    let itemValue: String?
    let version: Int?

    }

    初始化和TableView代码:
    var AppData: [Item]?

    let decoder = JSONDecoder()
    let response = try decoder.decode(SectionList.self, from: pickResult)
    let res = response.items?.filter { $0.actionType == 101}
    self.AppData = res


    func numberOfSections(in tableView: UITableView) -> Int {
    return AppData?.count ?? 0
    }

    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return AppData?[section].pickList[0].title
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    let dic = AppData?[indexPath.section]//.pickList?[indexPath.row].title
    //AppData?[indexPath.section].pickList[indexPath.row].items
    //print(dic)

    return cell
    }

    最佳答案

    不管您有多了解,我都能做到。检查此代码

    将结构创建为

    struct SectionList : Codable {

    let title : String?
    var items : [RowItems]?

    }

    struct RowItems: Codable {
    var textField : String?
    let itemValue: String?
    }

    struct SourceData: Codable {
    let items: [Item]?
    }
    struct Item : Codable {
    let actionType : Int?
    let pickList: [SectionList]?
    let version: Int?

    }

    创建类似于的变量
    var AppData: Item?

    将json解析为
    let decoder = JSONDecoder()
    let response = try decoder.decode(SourceData.self, from: data)
    let res = response.items?.filter { $0.actionType == 101}
    print("jsonData:\(res)")
    AppData = res?.first

    call 表数据源为
    func numberOfSections(in tableView: UITableView) -> Int {
    return AppData?.pickList?.count ?? 0
    }

    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return AppData?.pickList?[section].title
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return AppData?.pickList?[section].items?.count ?? 0
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    let dic = AppData?.pickList?[indexPath.section].items?[indexPath.row]//.pickList?[indexPath.row].title
    //AppData?[indexPath.section].pickList[indexPath.row].items
    //print(dic)

    cell.textLabel?.text = dic?.textField
    return cell
    }

    使用此代码的屏幕截图
    Table after this changes

    关于ios - 节和行未正确显示在UITableView Swift中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60184596/

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