gpt4 book ai didi

ios - 从嵌套数据数组向 UITableViewCell 中的 UITableView 填充数据

转载 作者:行者123 更新时间:2023-11-28 05:52:25 25 4
gpt4 key购买 nike

我是 swift 和 iOS 编程的新手。我正在尝试制作一个两层 TableView 。 tableview 单元格内的 Tableview 基本上就是我想说的。主 tableview 工作正常,但 tableview 内的 tableview 根本不工作。我已经尝试了一切......

# 个模型

// Main Model Struct
struct MainModel {
private(set) public var title: String
private(set) public var document: [Documents] = [Documents]()

init(title: String, document: [Documents]) {
self.title = title
self.document = document
}
}

// Document model struct
struct Documents {
private(set) public var name: String
private(set) public var link: String

init(name: String, link: String){
self.name = name
self.link = link
}
}

#数据服务类

class DataService{
static let instance = DataService()
private let dataArray = [
MainModel(title: "Demo 1", document: [Documents(name: "DOC 1", link: "http://www.google.com"), Documents(name: "DOC 2", link: "http://www.facebook.com")])
]

func getArrays() -> [MainModel] {
return dataArray
}
}

#主视图 Controller

import UIKit

class ResourceDataVC: UIViewController, UITableViewDelegate, UITableViewDataSource {


@IBOutlet weak var dataTable: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

self.dataTable.delegate = self
self.dataTable.dataSource = self
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return DataService.instance.getArrays().count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: “mainCell”) as? MainTableViewCell {
let _item = DataService.instance.getArrays()[indexPath.row]
cell.updateCell(data: _item)
return cell
} else {
return ResourceCell()
}
}
}

#主 TableViewCell 类

import UIKit

class MainTableViewCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource{

@IBOutlet weak var title: UILabel!
@IBOutlet weak var documentTable: UITableView!

var documentRes: [Documents] = [Documents]()

override func awakeFromNib() {
super.awakeFromNib()

self.documentTable.delegate = self
self.documentTable.dataSource = self
}

func updateCell(data: MainModel) {
self.title.text = data.title
self.documentRes = data.document
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.documentRes.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: “documentTableCell”) as? DocumentCell {
let _doc = documentRes[indexPath.row]
cell.updateDocument(document: _doc)
return cell
} else {
return DocumentCell()
}
}
}

# Document TableViewCell 类

import UIKit

class DocumentCell: UITableViewCell {

@IBOutlet weak var docName: UILabel!
@IBOutlet weak var docLink: UILabel!

func updateDocument(document: Documents) {
self.docName.text = document.name
self.docLink.text = document.link
}

}

而且这个方法永远不会被调用...为什么?我认为这可能是问题所在......

// from: MainTableViewCell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: “documentTableCell”) as? DocumentCell {
let _doc = documentRes[indexPath.row]
cell.updateDocument(document: _doc)
return cell
} else {
return DocumentCell()
}
}

请帮帮我!

最佳答案

MainTableViewCellupdateCell 的末尾做

self.documentTable.reloadData()

关于ios - 从嵌套数据数组向 UITableViewCell 中的 UITableView 填充数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52447596/

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