在SwiftUI中自定义视图

时间:2020-06-30 14:57:37

标签: ios swift binding swiftui

我刚刚开始使用SwiftUI并开始使用它。 我已经面临着这个挑战。

我有一个带滑块的视图:

struct RangeSpanView: View {
    @State var sliderValue = 0.0
    var minimumValue = 0.0
    var maximumValue = 100.0

    var body: some View {
        VStack {
            Spacer()
            HStack {
                Text("\(Int(minimumValue))")
                Slider(value: $sliderValue, in: minimumValue...maximumValue)
                Text("\(Int(maximumValue))")
            }.padding()
            Text("\(Int(sliderValue))")
            Spacer()
        }
    }
}

这是加载视图的代码。

var body: some View {
    NavigationLink(destination: RangeSpanView(),
                   label: {
                       .......... // Useful code.
    })
}

在这一点上,它并没有做很多,但是可以工作。尽管如此,这是我想做的,但我做不到。

我需要能够将参数传递给 RangeSpanView ,以便为滑块的 minimumValue maximumValue 值确定自定义值。我尝试了几种可以通过搜索找到或发现的代码变体。但是它们要么都不起作用,要么给出某种错误。

我的想法是我想要类似的东西:

RangeSpanView(minSliderVal: 20, maxSliderVal: 470)

工作,以便我可以根据自己的需要调整视图。

这可能吗,正确的语法是什么?

1 个答案:

答案 0 :(得分:0)

要么删除minimumValue和maximumValue的默认值,要么添加一个像这样的init:

init(
        minimumValue: CGFloat = 0.0,
        maximumValue: CGFloat = 100.0
    ) {
        self.minimumValue = minimumValue
        self.maximumValue = maximumValue
    }

或者如果您想更改这些值以使用@Binding var,以便可以从呈现它的视图中将其他@State变量传递给它们