我在编码此视图时遇到问题,因此我希望能够按加号按钮,然后在同一页面中添加另一个练习。
我使用了这段代码,但它说('VStack
Button(action: {
VStack{
HStack {
Text("Exercise Name").bold()
TextField("EX: Narrow Stance Leg Press", text: .constant("")).textFieldStyle(.roundedBorder)
}
ZStack{
HStack {
Spacer()
Picker("Number of Sets", selection: $selectedNumber){
ForEach(1...10, id: \.self) { number in
Text("\(number)")
}
}.frame(width: 102.0, height: 25.0)
}
HStack {
Text("Number of sets:").bold()
Spacer()
RoundedRectangle(cornerRadius: 13).stroke(.gray).frame(width: 133,height: 25)
}
}
ZStack{
HStack {
Spacer()
Picker("Number of reps", selection: $selectedNumber2){
ForEach(1...20, id: \.self) { number in
Text("\(number)")
}
}.frame(width: 102.0, height: 25.0)
}
HStack {
Text("Number of reps:").bold()
Spacer()
RoundedRectangle(cornerRadius: 13).stroke(.gray).frame(width: 133,height: 25)
}
}
}
}) {
ZStack{
Text("+").bold()
RoundedRectangle(cornerRadius: 13).stroke(.gray).frame(width: 133,height: 25)
}
正如我所说,我想按加号,然后再次添加相同的块(练习名称、组数、次数),以便用户添加另一个练习。
您将需要一个
struct
来保存数据,以便您可以更新,还需要一个 Array
以便您可以创建任意数量的项目,示例如下:
import SwiftUI
struct Exercise: Identifiable {
let id = UUID()
var name: String = ""
var sets: Int = 1
var rep: Int = 1
}
struct ExerciseView: View {
@State private var exercises: [Exercise] = [Exercise()]
var body: some View {
VStack {
ForEach($exercises) { $item in
ExerciseDetailView(exercise: $item)}
Spacer()
Button("+") {
exercises.append(Exercise())
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}
struct ExerciseDetailView: View {
@Binding var exercise: Exercise
var body: some View {
VStack{
HStack {
Text("Exercise Name").bold()
TextField("EX: Narrow Stance Leg Press", text: $exercise.name).textFieldStyle(.roundedBorder)
}
ZStack{
HStack {
Spacer()
Picker("Number of Sets", selection: $exercise.sets){
ForEach(1...10, id: \.self) { number in
Text("\(number)")
}
}.frame(width: 102.0, height: 25.0)
}
HStack {
Text("Number of sets:").bold()
Spacer()
RoundedRectangle(cornerRadius: 13).stroke(.gray).frame(width: 133,height: 25)
}
}
ZStack{
HStack {
Spacer()
Picker("Number of reps", selection: $exercise.rep){
ForEach(1...20, id: \.self) { number in
Text("\(number)")
}
}.frame(width: 102.0, height: 25.0)
}
HStack {
Text("Number of reps:").bold()
Spacer()
RoundedRectangle(cornerRadius: 13).stroke(.gray).frame(width: 133,height: 25)
}
}
}
}
}