Ant*_*ony 3 dictionary uitableview ios swift
我是 Swift 的新手,我目前正在创建一个日记应用程序来询问用户问题。我像这样存储用户的输入:
dict = ["date": ["question1": "answer", "question2": "answer"]]
Run Code Online (Sandbox Code Playgroud)
现在我需要在 tableview 中向用户显示这些数据,其中“date”是标题,“question1”是描述。
我在网上看过,但答案似乎参考了“indexPath.row”以将信息输入到单元格中,但由于这是一个字符串字典,我不能这样做。
感谢您的帮助!
与其使用字典数组,不如考虑使用更能代表数据的对象。
struct Question: {
let question: String
let answer: String
}
struct DiaryDay {
let date: Date // Note this is a Date object, not a String
let questions: [Question]
}
Run Code Online (Sandbox Code Playgroud)
那么你有
let diaryDays = DiaryDay(date: <date>, questions:
[Question(question: "question1": answer: "answer"),
Question(question: "question2": answer: "answer")])
Run Code Online (Sandbox Code Playgroud)
虽然有更多的代码,但往前看,你会发现更容易看到发生了什么。
看起来你应该每天都有一个部分的日记......
override func numberOfSections(in tableView: UITableView) -> Int {
return diaryDays.count
}
Run Code Online (Sandbox Code Playgroud)
然后每个问题一行......
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let diaryDay = diaryDays[section]
return diaryDay.questions.count
}
Run Code Online (Sandbox Code Playgroud)
然后配置你的手机……
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// dequeue cell
let diaryDay = diaryDays[indexPath.section]
let question = diaryDay.questions[indexPath.row]
cell.question = question
return cell
}
Run Code Online (Sandbox Code Playgroud)
并在部分标题中显示日期...
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let diaryDay = diaryDays[section]
return // formatted diaryDay.date
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |