【问题标题】:How can I display multiple TableViews from a Json File in Swift?如何在 Swift 中显示 Json 文件中的多个 TableView?
【发布时间】:2017-02-19 07:41:40
【问题描述】:

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

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

  • 巴西
  • 德国
  • 法国
  • 美国
  • 阿根廷
  • 等等……

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

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

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

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

我想从一个 tableview 导航到另一个 tableview,所以我不知道如何在屏幕顶部为每个 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"
        ]
    }
]

请问有人可以帮我吗?我该怎么做?非常感谢!

【问题讨论】:

  • 顺便说一句:您的 json 示例不是有效的 json。键“city”的值应该是一个数组
  • “应该是一个数组”是什么意思?我的 Json 示例的正确表达方式是什么?
  • 查看 RamenChef 的编辑
  • 我明白了,罗尔。这是显示 mi 城市的正确方式:“city”:[“Florida”、“New York”、“California”、“Nevada”]

标签: ios json xcode uitableview swift3


【解决方案1】:

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

使用存储的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] 作为行的标题

【讨论】:

    【解决方案2】:

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

    您需要了解以下主题:UITableViewUINavigationControllerStoryboards

    您可以关注this 教程,您会发现这是一项非常简单的任务。

    步骤如下:

    1. 首先,您需要在情节提要中设计应用程序 UI。您将为国家屏幕创建一个场景视图,为城市创建另一个场景视图,为城市详细信息屏幕创建另一个场景视图。
    2. UINavigationController 中嵌入第一个屏幕,这样您就可以免费获得所有导航内容。
    3. 在国家屏幕表格视图中显示国家数据。
    4. 从“国家/地区”表视图转到“城市”屏幕。这样当一个国家被选中时,它的城市就会显示在城市屏幕中。
    5. 使用方法prepareForSegue(在我上面提到的教程中描述)将选定的国家对象传递到城市屏幕。
    6. 在城市屏幕中显示城市列表。
    7. 从“城市”屏幕“城市详细信息”屏幕导航时执行相同操作。

    请先阅读教程,然后您就会很好地理解我提到的步骤。这是一个非常简单的任务,大约需要 1 小时。

    【讨论】:

    • Helo Minas,感谢您的宝贵时间和回答。但是我怎么能用 Json 文件做到这一点呢?是否有另一个教程可以解释如何将 Json 文件解析为 Swift?就像我想做的那样?
    • 解析 JSON 比你想象的要简单。查看this 教程。使用NSJSONSerialization 非常简单。如果您需要进一步的帮助,请告诉我。
    • 我觉得我有点迷路了。如果您能帮助我使用我的应用程序,我将不胜感激。有没有邮件、Skype 或其他我可以写信给你的地方?非常感谢米纳斯!
    • 当然,我很乐意提供帮助。你可以在推特上联系我@minaskamel
    • 嗨 Minas,我已经在推特上给你写信了,但你还没有回复我。所以你能不能给我一个电子邮件,所以我可以分享我的项目,你可以帮助我!非常感谢
    猜你喜欢
    • 2017-10-11
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多