gpt4 book ai didi

swift - 在 TableView 中添加不同的部分及其内部项目

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

我正在开发 Todo 应用程序,我有一个数组,其中包含项目和其中的待办事项。例如在第一个项目中,待办事项的标题是这样的:

cell.title.text = project[0].todo[indexPath.row].title

我真的需要帮助,如何在 cellForRowAt 中创建此类结构,我想在第 0 节中举例说明,它显示了 project[0 中的待办事项] 并继续其他项目。你能帮我吗

最佳答案

假设您具有以下数据结构:

struct Todo {
let title: String
}

struct Project {
let name: String
let todo: [Todo]
}

然后你必须实现TableView的数据源函数:

// Number of sections corresponds to number of projects
func numberOfSections(in tableView: UITableView) -> Int {
return project.count
}

// Each section title corresponds to the project name
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return project[section].name
}

// Number of rows per section corresponds to the number to ToDos per project
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return project[section].todo.count
}

然后您的 cellForRowAt 函数将从表中取出单元格。您必须使用 indexPath 变量来获取数据; indexPath.section 是项目的索引,indexPath.row 属性是项目中的待办事项。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath)
cell.textLabel?.text = project[indexPath.section].todo[indexPath.row].title
return cell
}

我创建了一个小项目来对此进行测试,并使用以下函数生成随机数据:

@objc private func generateData(_ sender: Any) {
project.removeAll()
let minimumProjects = 7
let minimumTodos = 3
for _ in 0...(minimumProjects + Int.random(in: 0...7)) {
let projectName = "\(Int.random(in: 374...93842))"
let newTodos = (minimumTodos...(minimumTodos + Int.random(in: 0...5))).map {_ in
Todo(title: "Title: \(Int.random(in: 0...123))")
}

let newProject = Project(name: "Project \(projectName)", todo: newTodos)
project.append(newProject)
}
DispatchQueue.main.async { [weak self] in
self?.refreshControl.endRefreshing()
self?.table.reloadData()
}
}

该应用程序如下所示: enter image description here

关于swift - 在 TableView 中添加不同的部分及其内部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57750210/

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