PrefsMate 1.0.0

PrefsMate 1.0.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2019年11月
SPM支持 SPM

Yue Cai 维护。



PrefsMate 1.0.0

PrefsMate

CI Status Version License Platform

PrefsMate 提供了一种优雅的方法来使用属性列表文件(plist 文件)生成 UITableView。同时,您还可以借助其支持配置动作。感谢 Swift 4 中的 Codable 协议,使代码变得完美简洁。

特性

  • 数据持久性
  • 开关辅助
  • 选择动作
  • 多节
  • 节头/节尾
  • 演示项目
  • 世界就绪
  • 更多自定义单元格

背景

在我们的应用程序中,通常需要在 PrefsViewController(或者可能命名为 SettingsViewController,随意)中创建一个 UITableView。界面可能就像这样:

PrefsViewController

在实现这类功能时,您内心一定会想:“写这个 UI 真是累死人了!难道有什么可以求助的吗?”

恭喜!你已经来到正确的位置了 :)。

使用

1. 创建一个包含格式化数据的plist文件

以下图为例,格式化的plist文件看起来像这样

plist structure

每个属性项的含义如下

属性 使用
标题 左侧文字
detailText 右侧文字
hasDisclosure 单元格是否具有 disclose 查看 accessory原件
hasSwitch 单元格是否具有开关
switchStatus 开关控件的状态
selectActionName 选择动作的名称(可选)
switchActionName 开关动作的名称(可选)

不要害怕这个长文件。实际上,你只需要做一些可点击的事情。为了方便起见,你甚至可以先复制和粘贴我们的 plist 源代码

2. 创建表格视图并执行解析工作

let tableView = Mate.createPrefsTableView()

您可以在 viewDidLoad() 中添加解析代码

 do {
      try Mate.parseWithSource(self, plistUrl: pListUrl) {
        tableView.reloadData()
      }
    } catch {
        // Handle with the error
    }

3. 如果需要,让您的视图控制器符合 PrefsSupportable 协议

如果您有选择和开关动作需要处理,PrefsSupportable 协议已经为您考虑。

public protocol PrefsSupportable {
    /// Return a bunch of switchableItems, including their behavior in SwitchableItemHandler.
    var switchableItems: [SwitchActionName: SwitchableItemHandler]? { get }
    
    /// Return a bunch of selectableItems, including their behavior in SelectableItemHandler.
    var selectableItems: [SelectActionName: SelectableItemHandler]? { get }
}

以夜间主题的开关为例

var switchableItems: [SwitchActionName : SwitchableItemHandler]? {
        return [
            "handleThemeMode": { isOn in
                print("Dark theme mode is \(isOn)")
            }
        ]
}
var selectableItems: [SelectActionName : SelectableItemHandler]? {
        return [
            “changeIcon”: { 
                print(“Handle change icon action here”)
            }
           ...
           ...
        ]
}

然后我们就完成了!PrefsMate 会为您做正确的事情。

请注意:字符串 "handleThemeMode" 必须与 plist 文件中 switchActionName 的值相同。对 selectActionName 也是如此。

在开关动作中,PrefsMate 已经处理了 数据持久性。因此,您不需要自己存储用户首选项。

您可以参考示例项目了解更多详情。

建议

  • 熟悉plist文件结构将非常有帮助。有时您可以直接通过“打开为源代码”编辑plist文件。

  • 如果您有问题,请随时告诉我 :)

示例

要运行示例项目,请克隆仓库,并在Example目录下运行pod install

(因为这是个新的Pod,您可能需要先运行pod update。)

所需条件

  • Swift 4
  • iOS 9 或更高版本

安装

PrefsMate 通过 CocoaPods 提供。要安装它,只需在您的Podfile中添加以下行

pod 'PrefsMate'

联系

许可证

PrefsMate 在MIT许可证下提供。有关更多信息,请参阅LICENSE文件。