Как создать иерархию Tableview из JSON? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь создать простое приложение, но на удивление я не смог найти ответы, помогающие мне.

Корневым представлением был бы UINavigationController, и внутри него я хотел бы поместить UITableViewController, который я бы заполнил.с UITableViewCells из данных в словаре.Когда я нажимал на один из UITableViewCell, он перенаправлял меня на другой UITableViewController, также заполняемый из моего словаря.

[
        "name": "Functions",
        "icon": "calculator",
        "subcategories": [
            [
                "name": "Plan Leg",
                "icon": "globe",
                "subcategories": [
                    [
                        "name": "Heading & Groundspeed",
                        "destination": ""
                    ],
                    [
                        "name": "Time & Distance",
                        "destination": ""
                    ],
                    [
                        "name": "Fuel & Distance",
                        "destination": ""
                    ],
                ]
            ]
       ]
]

Например, здесь я хотел бы создать TableViewController, называемый «Функции» с однимTableViewCell «Plan Leg», который перенаправляет на другой TableViewController с 3 ячейками «Heading & Groundspeed», «Time & Distance» и «Fuel & Distance»

1 Ответ

0 голосов
/ 09 февраля 2019
class CatagoriesArray : Decodable {
    var catagories : [Catagories]?
}
class Catagories : Decodable {
    var name : String?
    var icon : String? 
    var subcategories : [Subcategories]?
}

class Subcategories : Decodable {
    var name : String? 
    var icon : String? 
    var subcategories : [SubcategoriesType]?
 }

 class SubcategoriesType : Decodable {
    var name : String? 
    var destination : String?
 }

добавить эту строку для декодирования

 let model = try? JSONDecoder().decode(CatagoriesArray.self, from: data) // data that will come from API response 

в "Функции" tableViewController

override func viewDidLoad() {
    self.title = model[0].name // prints "Functions"
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return model[0].subcategories.count 
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath) 
    cell.nameLabel.text = model[0].subcategories.name
    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let vc = self.storyBoard.instantiateViewController(withIdentifier : "identifier") as! FuncCatagory
    vc.subcategories = model[0].subcategories[indexPath.row]
    self.navigationController.pushViewController(vc, animated : true)
}

в FuncCatagory заполнить табличное представление как тот же код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...