Если вы используете стандартное табличное представление (без разделов), каждый элемент в источнике данных представляет одну строку.Вы не можете просто создать новый indexPath.row .
У вас есть два варианта:
Использовать разделы: Один Whatever
- один раздел , title
- заголовок, каждый tag
- это одна строка (см. Код ниже)
Объединить ключи и значения тегов
cell.titleLabel?.text = caseTag.keys.joined(separator: ", ")
cell.txt.text = caseTag.values.joined(separator: ", ")
Относительно второй вопрос : Словари не упорядочены, порядок отсутствует.Если вам нужен конкретный порядок, используйте другую структуру Tag
и сделайте tags
массивом, например
struct Whatever {
let title: String
let tags: [Tag]
}
struct Tag {
let key, value : String
}
let cases = [
Whatever(title: "Name1", tags: [Tag(key: "key1", value: "value1"), Tag(key: "key2", value: "value2")]),
Whatever(title: "Name2", tags: [Tag(key: "key3", value: "value3"), Tag(key: "key4", value: "value4")])
]
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let case = cases[section]
return case.title
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
let section = cases[indexPath.section]
let case = section.tags[indexPath.row]
cell.titleLabel?.text = case.key
cell.txt.text = case.value