我以带有两个绑定的SwiftUI为例。我想从这两个绑定中创建一个范围。
@Binding var lowerBound:Double
@Binding var upperBound:Double
现在,我要使用范围初始化滑块。所以我认为这会起作用:
var range = lowerBound...upperBound
但是这去哪儿了?如果我把它放在下面
var body: some View {
var range = lowerBound...upperBound
我收到此错误:
Function declares an opaque return type, but has no return statements in its body from which to infer an underlying type
如何从绑定中创建变量?
答案 0 :(得分:0)
我刚接触SwiftUI。我的问题是必须显式声明一个返回视图。不能将逻辑与视图混淆。如果是这样,则必须声明要返回的视图。那是导致我的编译错误。
答案 1 :(得分:0)
要使用SwiftUI初始化滑块,则不需要范围。请参见以下示例:
struct ContentView: View {
@State private var sliderValue: Double = 200
@State private var lowerBound: Double = 10
@State private var upperBound: Double = 1000
var body: some View {
CustomButton(sliderValue: $sliderValue, lowerBound: lowerBound, upperBound: upperBound)
}
}
struct CustomButton: View {
@Binding var sliderValue: Double
var lowerBound: Double
var upperBound: Double
var body: some View {
Slider(value: $sliderValue, from: lowerBound, through: upperBound, by: 10)
.padding()
}
}
基于SwiftUI滑块文档初始化滑块,您需要遵循以下签名:
public init(值:绑定,从最小值:V = 0.0,到最大值:V = 1.0,onEditingChanged:@转义(布尔)->无效= {_}),其中V:BinaryFloatingPoint,V.Stride:BinaryFloatingPoint
minValue:有效值范围的开始。默认值
到0.0
maxValue:有效值范围的结尾。默认为1.0
。
您会看到第一个参数是绑定,而minValue和maxValue没有绑定。
答案 2 :(得分:0)
我从中学到了很多。在初始化和回调中必须同时使用@State和@Environment对象。
这是我的SQL Generator示例,它全部基于此示例。它使用带有选择器和滑块的绑定!