gpt4 book ai didi

ios - 创建表选择 View 的最有效方法,带有 swift 和 IOS 中的标题

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

我想要一个用于选择键值对的 TableView 。该表将可重复用于多种用途,但这是一个使用类(class)和学生的示例:

11A/It
4125:John
5121:Ben
6121:Anna
4125:Gemma
10B/It
5121:Ben
6121:Anna
4125:Gemma
4512:Kevin

类名是标题——它们是不可选择的。学生是可选的, TableView 将通过协议(protocol)传回键和值。

重要的是,这些都保持有序,这意味着我的第一次尝试并没有真正奏效:

var data = [String:[String:String]()
// Causes problems, because dictionaries have no order

所以,我想我可以把字典变成数组:

var data = [[String:[[String:String]]]()

这允许我获得部分的数量,但是我无法弄清楚如何获得行数:

func numberOfSections(in tableView: UITableView) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data[section].first.count // Nope!
}

所以,我想我正在寻找一些关于最佳方法的一般性建议。我可以看到两种解决方法:

  1. 分别有一组标题和数据,这样我就可以做类似`data[headings[section]][row]的事情
  2. 创建自定义键:值类型并使用它

不过我有一种感觉,我可能让事情过于复杂了 - 是否有一种标准的公认方法来解决这个问题。看起来这一定是很常见的事情?非常感谢!

最佳答案

我会创建一个可以保存数据的结构,而不仅仅是一个抽象字典。

例如

struct ClassData {
let title: String
let students: [Student]
}

struct Student {
id: Int
name: String
}


let tableData = [ClassData]()

func numberOfSections(in tableView: UITableView) -> Int {
return tableData.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableData[section].students.count
}

关于ios - 创建表选择 View 的最有效方法,带有 swift 和 IOS 中的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541414/

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