一个让 SwiftUI 属性编辑界面显示更简单的库。
字符串 | 布尔值 | 整数 |
---|---|---|
![]() |
![]() |
![]() |
双精度浮点数 | 日期 | 颜色 |
---|---|---|
![]() |
![]() |
![]() |
图像 | UI/NSImage |
---|---|
数组 | 字典 |
---|---|
![]() |
![]() |
枚举(CaseIterable) | 枚举(CaseIterable & RawRepresentable) |
---|---|
![]() |
![]() |
Codable |
---|
![]() |
注意 如果你想使用相机编辑图像,你必须在 info.plist 文件中添加一个名为
NSCameraUsageDescription
的键。
var name = ""
EditValueView(key: "name", value: name)
.onUpdate { newValue in
name = newValue
}
EditValueView(target, key: "name", keyPath: \Item.name)
.onUpdate { newValue in
target[keyPath: \.name] = newValue
}
@State var name: String = ""
EditValueView(key: "name", binding: $name)
当您按下 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
}
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