如何在Swift中的Json文件中显示多个TableView?

时间:2016-10-10 19:57:04

标签: ios json xcode uitableview swift3

我想要做的是将我的信息从Json文件显示到Xcode(Swift)上的TableView中。这是我想要的一个例子:

我想从国家,城市和城市的一些附加信息中检索我的json数据。在第一个屏幕中,我想在TableView中显示国家/地区的名称:

  • 巴西
  • 德国
  • 法国
  • USA
  • 阿根廷
  • 等...

然后,当我在一个国家(例如美国)的单元格中clic时,我想打开一个包含来自USA的所有州(或城市)的新TableView。所以我在美国clic,我在第二个屏幕上有以下信息:

  • 佛罗里达
  • 纽约
  • 加利福尼亚
  • 内华达
  • 等...

最后,当我在某个州(或城市)陈词滥调时,例如在纽约,我希望从我选择的州(纽约州)中显示一些附加信息。所以在第三个屏幕中我有:

“纽约是一个很棒的城市......等等”

我想从一个tableview到另一个tableview navegate,所以我不知道如何为每个tableview添加屏幕顶部的“后退”按钮。我希望在不同的单元格中显示国家和城市,因此我可以对它们进行陈述并显示信息。

这是我的json示例:

[
    {
        "country": "Brazil",
        "city": [
            "Sao Paulo",
            "Rio de Janeiro"
        ]
    },
    {
        "country": "Germany",
        "city": [
            "Berlin",
            "Frankfurt"
        ]
    },
    {
        "country": "France",
        "city": [
            "Paris",
            "Marselle"
        ]
    },
    {
        "country": "USA",
        "city": [
            "Florida",
            "New York",
            "California",
            "Nevada"
        ]
    },
    {
        "country": "Argentina",
        "city": [
            "Buenos Aires",
            "Mendoza",
            "La Plata"
        ]
    },
    {
        "country": "England",
        "city": [
            "London",
            "Manchester",
            "Liverpool"
        ]
    }
]

请有人帮我这样做吗?我该怎么做?非常感谢!

2 个答案:

答案 0 :(得分:3)

这非常简单,大部分工作都是由iOS和Xcode完成的,你不会做那么多工作。

您需要了解以下主题:UITableViewUINavigationControllerStoryboards

您可以按照this教程进行操作,您会发现这是一项非常简单的任务。

以下是步骤:

  1. 首先,您需要在故事板中设计应用程序UI。您将为“国家/地区”屏幕创建一个场景视图,为“城市”创建另一个场景视图,为“城市详细信息”屏幕创建另一个场景视图。
  2. 将第一个屏幕嵌入UINavigationController,以便免费获取所有导航内容。
  3. 在国家/地区屏幕表视图中显示国家/地区数据。
  4. 在“国家/地区”表格视图中显示“城市”屏幕。因此,当选择一个国家/地区时,其城市将显示在城市屏幕中。
  5. 使用方法prepareForSegue(在我上面提到的教程中描述)将选定的国家/地区对象传递到Cities屏幕。
  6. 显示城市屏幕中的城市列表。
  7. 从城市屏幕城市详细信息屏幕导航时执行相同操作。
  8. 请先阅读教程,然后你会很清楚我提到的步骤。这项非常简单的任务大约需要1个小时。

答案 1 :(得分:0)

您的表视图数据源方法是针对此用例设计的:

使用存储的NSIndexPath *selected跟踪didSelectRow中的ui状态

向数据源方法添加if语句,if (selected)添加到cellForRow和numberOfRows

selected == nil逻辑分支中,return dict.keys.count代表行数,并返回dict.keys[indexPath.row][@"country"]作为行的标题

selected != nil分支中,return dict[dict.keys[selected.row][@"cities"].keys.count代表行数,并返回dict[dict.keys[selected.row]][@"cities"][indexPath.row]作为行标题