如何使用SwiftUI绑定创建变量?
我有一个带有两个绑定的SwiftUI作为示例。我想从这两个绑定创建一个范围如何使用SwiftUI绑定创建变量?,swiftui,Swiftui,我有一个带有两个绑定的SwiftUI作为示例。我想从这两个绑定创建一个范围 @Binding var lowerBound:Double @Binding var upperBound:Double 现在我想用一个范围初始化滑块。所以我认为这会起作用: var range = lowerBound...upperBound 但这是怎么回事?如果我把它放在下面 var body: some View { var range = lowerBound...upperBound
@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
如何从绑定中生成变量?我对SwiftUI是新手。我的问题是必须显式声明返回视图。人们不能把逻辑和观点混为一谈。如果是这样,则必须声明要返回的视图。这导致了我的编译错误 我刚接触SwiftUI。我的问题是必须显式声明返回视图。人们不能把逻辑和观点混为一谈。如果是这样,则必须声明要返回的视图。这导致了我的编译错误 要使用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 Slider文档要初始化滑块,您需要遵循以下签名:
public initvalue:Binding,从minValue:V=0.0到maxValue:V=1.0,onEditingChanged:@escaping Bool->Void={in},其中V:BinaryFloatingPoint,V.Stride:BinaryFloatingPoint
值:“minValue…maxValue”中的选定值
minValue:有效值范围的开始。默认值
到0.0
maxValue:有效值范围的结尾。默认值为1.0
您可以看到第一个参数是绑定,minValue和maxValue不绑定。要使用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 Slider文档要初始化滑块,您需要遵循以下签名:
public initvalue:Binding,从minValue:V=0.0到maxValue:V=1.0,onEditingChanged:@escaping Bool->Void={in},其中V:BinaryFloatingPoint,V.Stride:BinaryFloatingPoint
值:“minValue…maxValue”中的选定值
minValue:有效值范围的开始。默认值
到0.0
maxValue:有效值范围的结尾。默认值为1.0
您可以看到第一个参数是绑定,minValue和maxValue不绑定。我学到了很多。有必要在init和回调中同时使用@State和@Environment对象 SQL生成器就是基于这个示例的。它使用带有选择器和滑块的绑定
我从中学到了很多。有必要在init和回调中同时使用@State和@Environment对象 下面是我的SQL生成器示例,这一切都基于此。它使用带有选择器和滑块的绑定
您可以创建一个viewmodel,当设置lowerBound和UpperBound时,该viewmodel会创建var范围您的方法感觉。。。错误的首先,问题是您在某些视图之外而不是内部声明变量。第二,为什么不直接使用两个变量呢?SwiftUI滑块需要一个名为in的参数,这是您尝试执行的范围。我的SwiftUI滑块使用三个甚至四个ObserveObject变量,这些变量被设置为struct-min、max、default和soon-step的数组。听起来不刺耳,但听起来你还没有掌握一些快速界面的基本知识。顺便说一句,我没有投你反对票。你可以创建一个viewmodel,在设置lowerBound和UpperBound时创建var范围你的方法感觉。。。错误的首先,问题是您在某些视图之外而不是内部声明变量。第二,为什么不直接使用两个变量呢?SwiftUI滑块需要一个名为in的参数,这是您尝试执行的范围。我的SwiftUI滑块使用三个甚至四个ObserveObject变量,这些变量被设置为struct-min、max、default和soon-step的数组。听起来不刺耳,但听起来你还没有掌握一些快速界面的基本知识。顺便说一句,我没有否决你。你必须按设计使用属性包装,而不是在init中尝试使用它们。你必须按设计使用属性包装,而不是在init中尝试使用它们