EditValueView

一个让 SwiftUI 属性编辑界面显示更简单的库。

演示

字符串 布尔值 整数
String-light Bool-light Int-light
双精度浮点数 日期 颜色
Double-light Date-light Color-light
图像 UI/NSImage
Image-light UIImage-light
数组 字典
Array-light Dictionary-light
枚举(CaseIterable) 枚举(CaseIterable & RawRepresentable)
Enum(CaseIterable)-light Enum(CaseIterable   RawRepresentable)-light
Codable
Codable-light

支持的类型

用法

注意 如果你想使用相机编辑图像,你必须在 info.plist 文件中添加一个名为 NSCameraUsageDescription 的键。

SwiftUI

初始化

更新处理程序

当您按下 save 按钮时,您可以收到编辑回调。

EditValueView(target, key: "name", keyPath: \Item.name)
    .onUpdate { newValue in
        // update
    }

输入验证

您可以验证输入值。

EditValueView(target, key: "name", keyPath: \Item.name)
    .validate { newValue -> Bool in
        // input validation
        return !name.isEmpty
    }

UIKit

let vc = EditValueViewController(target, key: "name", keyPath: \Item.name)
vc.onUpdate = { target, newValue in
    // update
}
vc.validate = { target, newValue -> Bool in
    // input validation
}

协议

当使用可选类型时,当使用 nil 时,Codable 的类型提示无法显示。为了避免此类问题,请根据名为 DefaultRepresentable 的协议提供默认值。

struct Item: Codable {
    var name: String
    var date: Date
}

struct Message: Codable {
    var content: String
    var item: Item?
}
// Confirm to `DefaultRepresentable` protocol
extension Item: DefaultRepresentable {
    static var defaultValue: Self {
        .init(name: "name", date: Date())
     }
}
// give default value
EditValueView(target, key: "item", keyPath: \Message.item, defaultValue: .init(name: "name", date: Date()))

许可证

EditValueView 基于 MIT 许可证发布。请参阅 LICENSE