多个滑块效果不佳?
Multiple Slider didn't works well?
嗨,我是韩国学生,正在制作申请的自我诊断页面
我通过滑块制作了自我诊断页面。我需要 8 个滑块,因为我有 8 个问题。
起初我制作了第一个滑块,效果很好。但是,我制作了更多滑块,但收到错误消息。我想删除错误消息以使我的页面正常运行。我尝试了 swift 建议的所有方法。
我想知道为什么在制作第二个和更多滑块后出现错误消息
这是我的代码,我使用 SwiftUI,我的 Xcode 版本是 11.2.1
import SwiftUI
struct ContentView: View {
@State private var value1: Double = 0
@State private var value2: Double = 0
@State private var value3: Double = 0
@State private var value4: Double = 0
@State private var value5: Double = 0
@State private var value6: Double = 0
@State private var value7: Double = 0
@State private var value8: Double = 0
var body: some View {
VStack {
Text("앉아서 책(신문 잡지 서류 등)을 읽을 때")
Slider(value: $value1,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
Text("TV볼 때")
Slider(value: $value2,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
Text("공공장소(모임, 극장 등)에서 가만히 앉아 있을 때")
Text("정차 없이 1시간 동안 운행 중인 차에 승객으로 앉아 있을 때")
Text("오후에 주위상황이 허락되어 쉬려고 누워 있을 때")
Text("앉아서 상대방과 이야기 할 때")
Text("반주를 곁들이지 않은 점심식사 후 조용히 앉아 있을 때")
Text("교통 혼잡으로 몇 분 동안 멈춰선 차 안에서")
}
}
}
此外,如果我将 value1 设为 Int,swift 会出错
Initializer 'init(value:in:step:onEditingChanged:)' requires that 'Int.Stride' (aka 'Int') conform to 'BinaryFloatingPoint'
所以我改变
Slider(value: $value1,in: 0...3, step: 1).padding(.horizontal,30)
to
Slider(value: $value1,in: 0...3, step: 1.0).padding(.horizontal,30)
然后我在
收到了新的错误信息
.padding(.horizontal,10)
and error message is
'Int' is not convertible to 'CGFloat?'
我只想知道这是怎么回事
如果您能提出解决方案,我将不胜感激。
是SwiftUI误报。您只是在一个容器中有太多视图(在您的情况下是顶级 VStack)。 不允许超过 10 个,所以只需像下面这样使用组(或为类似模式制作子视图并单独提取)
struct ContentView: View {
@State private var value1: Double = 0
@State private var value2: Double = 0
@State private var value3: Double = 0
@State private var value4: Double = 0
@State private var value5: Double = 0
@State private var value6: Double = 0
@State private var value7: Double = 0
@State private var value8: Double = 0
var body: some View {
VStack {
Group {
Text("앉아서 책(신문 잡지 서류 등)을 읽을 때")
Slider(value: $value1,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
}
Group {
Text("TV볼 때")
Slider(value: $value2,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
}
// ... other grouped sliders here
}
}
}
嗨,我是韩国学生,正在制作申请的自我诊断页面 我通过滑块制作了自我诊断页面。我需要 8 个滑块,因为我有 8 个问题。 起初我制作了第一个滑块,效果很好。但是,我制作了更多滑块,但收到错误消息。我想删除错误消息以使我的页面正常运行。我尝试了 swift 建议的所有方法。 我想知道为什么在制作第二个和更多滑块后出现错误消息
这是我的代码,我使用 SwiftUI,我的 Xcode 版本是 11.2.1
import SwiftUI
struct ContentView: View {
@State private var value1: Double = 0
@State private var value2: Double = 0
@State private var value3: Double = 0
@State private var value4: Double = 0
@State private var value5: Double = 0
@State private var value6: Double = 0
@State private var value7: Double = 0
@State private var value8: Double = 0
var body: some View {
VStack {
Text("앉아서 책(신문 잡지 서류 등)을 읽을 때")
Slider(value: $value1,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
Text("TV볼 때")
Slider(value: $value2,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
Text("공공장소(모임, 극장 등)에서 가만히 앉아 있을 때")
Text("정차 없이 1시간 동안 운행 중인 차에 승객으로 앉아 있을 때")
Text("오후에 주위상황이 허락되어 쉬려고 누워 있을 때")
Text("앉아서 상대방과 이야기 할 때")
Text("반주를 곁들이지 않은 점심식사 후 조용히 앉아 있을 때")
Text("교통 혼잡으로 몇 분 동안 멈춰선 차 안에서")
}
}
}
此外,如果我将 value1 设为 Int,swift 会出错
Initializer 'init(value:in:step:onEditingChanged:)' requires that 'Int.Stride' (aka 'Int') conform to 'BinaryFloatingPoint'
所以我改变
Slider(value: $value1,in: 0...3, step: 1).padding(.horizontal,30)
to
Slider(value: $value1,in: 0...3, step: 1.0).padding(.horizontal,30)
然后我在
收到了新的错误信息.padding(.horizontal,10)
and error message is
'Int' is not convertible to 'CGFloat?'
我只想知道这是怎么回事
如果您能提出解决方案,我将不胜感激。
是SwiftUI误报。您只是在一个容器中有太多视图(在您的情况下是顶级 VStack)。 不允许超过 10 个,所以只需像下面这样使用组(或为类似模式制作子视图并单独提取)
struct ContentView: View {
@State private var value1: Double = 0
@State private var value2: Double = 0
@State private var value3: Double = 0
@State private var value4: Double = 0
@State private var value5: Double = 0
@State private var value6: Double = 0
@State private var value7: Double = 0
@State private var value8: Double = 0
var body: some View {
VStack {
Group {
Text("앉아서 책(신문 잡지 서류 등)을 읽을 때")
Slider(value: $value1,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
}
Group {
Text("TV볼 때")
Slider(value: $value2,in: 0...3, step: 1).padding(.horizontal,30)
HStack {
Text("전혀").offset(x:17)
Spacer()
Text("조금").offset(x:22)
Spacer()
Text("상당히").offset(x:20)
Spacer()
Text("매우 많이")
}.padding(.horizontal,10)
}
// ... other grouped sliders here
}
}
}