【发布时间】:2019-06-21 06:06:17
【问题描述】:
我的数据模型中有一个UInt?(可选)属性,我正在尝试使用SwiftUI 绑定到Toggle 和Slider。我正在尝试这样的事情:
-
maximumRingsShownCount的值为 4(不是 nil),那么切换开关应该是on,并且值绑定到滑块。 -
maximumExpandedRingsShownCount值为 nil,则切换应关闭且滑块不显示。
我在这里面临两个问题:
- 看起来我们不能有可选绑定(用于 Slider)
- 是否可以使用转换器将可选项转换为布尔值(用于切换)?
到目前为止,在我看来,除了我的模型之外,我还声明了 2 个属性:
@ObjectBinding var configuration: SunburstConfiguration
@State private var haveMaximumRingsShownCount: Bool = false
@State private var haveMaximumExpandedRingsShownCount: Bool = false
我的视图主体包含(对于每个属性):
Toggle(isOn: $haveMaximumRingsShownCount) {
Text("maximumRingsShownCount")
}
if haveMaximumRingsShownCount {
VStack(alignment: .leading) {
Text("maximumRingsShownCount = \(config.maximumRingsShownCount!)")
Slider(value: .constant(4 /* no binding here :( */ ))
}
}
}
UI 布局是正确的,但我仍然有上面提到的问题,因为:
-
haveMaximumRingsShownCount状态未绑定到我的config.maximumRingsShownCount模型是否为零 - 滑块当前仅显示一个常量,未绑定到展开的
config.maximumRingsShownCount属性
关于如何使用可选选项解决这些问题的任何想法?
[这可以在https://github.com/lludo/SwiftSunburstDiagram的示例代码中重现]
【问题讨论】:
-
您能否添加 预期 它的外观以及 SwiftUI 抛出的错误?
-
UI 布局正确,在问题中。对于错误,如果我将一个可选参数传递给 Slider,我会得到:无法转换“UInt”类型的值?到预期的参数类型'Binding<_>',并且对于Toggle,绑定Double 没有意义?到 Binding
,它需要转换,所以同样的问题。
标签: ios swift iphone user-interface swiftui