JSONViewControllers 0.1.13

JSONViewControllers 0.1.13

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2019 年 4 月
SPM支持 SPM

Graham PerksGraham Perks 维护。



  • Snap Kitchen

JSONViewControllers

[![CI Status](http://img.shields.io/travis/Graham Perks/JSONViewControllers.svg?style=flat)](https://travis-ci.org/Graham Perks/JSONViewControllers)Version License Platform

用法

UITableViewController 及 UICollectionViewController 子类在以下情况下很有用:

  • 在多个表/集合中共享单元格
  • 表格结构未知或在构建时是可变的

它们

  • 将单元格逻辑移动到单元格控制器类中
  • 使数据源数据驱动
  • 可以从 JSON 中加载数据表结构

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install

JSON 描述您的表格。该 JSON 可以在运行时下载、嵌入或生成。它描述了表格的各个部分和行。

每一行都有一个由单元格定义决定的属性集。例如,显示名称的单元格可能定义了一个“名称”属性。例如:

[
    {
        "rows": [
            {
                "nib": "NameCell",
                "name": "Graham Perks"
            }
        ]
    }
]

这是一个单单元格表格。外部数组用于区域;单个区域包含行数组。有趣的是,单元格可以为其数据定义键值路径,例如:

            {
                "nib": "NameCell",
                "nameKeyPath": "user.name"
            }

单元格将在表视图控制器上显示“user.name”键路径的值。

XIB不是必需的。也可以将单元格定义为一个类

            {
                "class": "NameCell",
                "nameKeyPath": "user.name"
            }

预定义键

行为

当行被点击时,将触发“行为”键。值应该是选择器的名称;可选地,它还可以接受一个参数,该参数将是单元格定义字典。

    func menuItemTapped(cell: [String : AnyObject]) {
        let json = JSON(cell)

        // Log an event given the "analytics" entry in the row definition, e.g.
        Analytics.LogEvent(json["analytics"].stringValue)
        
        // And trigger the segue given the "segue" value.
        if let segueName = json["segue"].string {
            parentViewController?.performSegueWithIdentifier(segueName, sender: self)
        }
    }

驱动这种逻辑的适当单元格可能如下:

            {
                "action": "menuItemTapped:",
                "nib": "NavigationCell",
                "analytics": "Navigator|food",
                "segue": "showFoodMenu",
                "caption": "Food Menu",
                "icon": "icn_foodmenu"
            }

JSON不是必需的。可以在运行时构建视图结构后直接分配给'区域'数组。

提示

  • 添加 import SwiftyJSON
  • 在设计nib时,首先删除Interface Builder提供的UIView,然后拖出一个表格或集合视图单元格。
  • 使XIB、类和单元格的可重用标识符相同。
  • 在单元格内使用自动布局定义单元格高度。

要求

使用SwiftyJSON简化JSON操作。

安装

JSONViewControllers可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的Podfile中:

pod "JSONViewControllers"

对于Objective-C的实现,请参阅 https://github.com/gperks/ASPTableViewController

作者

格雷厄姆·帕金斯,[email protected]

许可协议

JSONViewControllers 遵循 MIT 许可协议。更多信息请查看 LICENSE 文件。