SwiftUI ProgressView 没有更新 Button 闭包中的进度值
SwiftUI ProgressView is not updating progress value within Button closure
这是我在 iPad 上的 Swift Playgrounds 中创建的一个相当简单的示例,但我在更大的 Xcode 项目中遇到了同样的问题。每当我单击按钮时,我都会尝试更新进度视图,以便向用户显示数据中还剩下多少(在本例中)名称。但是进度视图只是不想更新。有什么建议吗?
导入SwiftUI
构造 ContentView:视图 {
let names = ["Tim", "Peter", "Jennifer", "Wolfgang"]
@State private var index = 0
@State private var progress = 0.0
var body: some View {
VStack(spacing: 50) {
Text(names[index])
.font(.title)
ProgressView(value: progress)
.progressViewStyle(.linear)
.padding(.horizontal)
Button("Next") {
if index < names.count - 1 {
index += 1
progress += Double(1 / names.count)
} else {
index = 0
}
}
}
}
}
提前致谢
您的 progress
始终为 0,因为 Double(1 / names.count)
始终 returns 0。在除以 1 之前,您必须将 names.count
转换为 Double
。
解决方案
尝试progress += 1 / Double(names.count)
。
这是我在 iPad 上的 Swift Playgrounds 中创建的一个相当简单的示例,但我在更大的 Xcode 项目中遇到了同样的问题。每当我单击按钮时,我都会尝试更新进度视图,以便向用户显示数据中还剩下多少(在本例中)名称。但是进度视图只是不想更新。有什么建议吗?
导入SwiftUI
构造 ContentView:视图 {
let names = ["Tim", "Peter", "Jennifer", "Wolfgang"]
@State private var index = 0
@State private var progress = 0.0
var body: some View {
VStack(spacing: 50) {
Text(names[index])
.font(.title)
ProgressView(value: progress)
.progressViewStyle(.linear)
.padding(.horizontal)
Button("Next") {
if index < names.count - 1 {
index += 1
progress += Double(1 / names.count)
} else {
index = 0
}
}
}
}
}
提前致谢
您的 progress
始终为 0,因为 Double(1 / names.count)
始终 returns 0。在除以 1 之前,您必须将 names.count
转换为 Double
。
解决方案
尝试progress += 1 / Double(names.count)
。