![](/img/trans.png)
[英]Cannot convert value of type 'Binding<_>' to expected argument type 'Binding<Card>'
[英]SwiftUi- Cannot convert value of type Binding<[ExercisePlan]>.Element to expected argument type Binding<[ExercisePlan]>
我正在尝试创建一个指向另一个视图 (ExercisePlanDetailView) 的 NavigationLink,它要求我将 @State var exercisePlan 作为绑定 var 传递,但它一直给我这个错误。 我在 ExercisePlan Detail 视图中也有一个 @Binding var。
运动计划视图:
`
import SwiftUI
struct ExercisePlanView: View {
@State var isSheetPresented = false
@State var exercisePlan = [
ExercisePlan(title: "Exercise Plan 1", details: "Choose this for a light and basic workout", exercise:
Exercise(title: "Toe touches and Arm Stretches", duration: 5), exercise2: Exercise(title: "ArmCircles", duration: 5), exercise3: Exercise(title: "Calf Raises", duration: 5), exercise4: Exercise(title: "Jog on the Spot", duration: 5)
),
ExercisePlan(title: "Exercise Plan 2", details: "Choose this for a medium difficulty workout", exercise: Exercise(title: "High Knee March", duration: 5), exercise2: Exercise(title: "Stair Exercise", duration: 10), exercise3: Exercise(title: "Chair Exercise", duration: 5), exercise4: Exercise(title: "Lunges", duration: 5)),
// ExercisePlan(title: "Exercise Plan 2", details: "Choose this plan for a more intermediate set of workouts", exercise: Exercise(title: "Wall Push-ups", duration: <#T##Int#>), exercise2: <#T##Exercise#>, exercise3: <#T##Exercise#>, exercise4: <#T##Exercise#>)
]
var body: some View {
let row = GridItem(.fixed(50), spacing: 20, alignment: .center)
ScrollView(.horizontal) {
LazyHGrid(rows: [row]) {
ForEach($exercisePlan) { $exercisePlan in
NavigationLink {
ExercisePlanDetailView(exercisePlan: $exercisePlan)
.frame(maxWidth: .infinity, maxHeight: .infinity)
} label: {
Text(exercisePlan.title)
.foregroundColor(.black)
.frame(width: 120, height: 130)
.padding()
.background((Color(red: 220/255, green: 247/255, blue: 99/255)))
.cornerRadius(10)
}
}
// .sheet(isPresented: $isSheetPresented) {
// ExercisePlanDetailView(exercisePlan: $exercisePlan)
}
}
}
}
struct ExercisePlanView_Previews: PreviewProvider {
static var previews: some View {
ExercisePlanView()
}
}
`
ExercisePlanDetailView:
import SwiftUI
struct ExercisePlanDetailView: View {
@Binding var exercisePlan: [ExercisePlan]
var body: some View {
VStack {
Text($exercisePlan.title)
}
}
}
struct ExercisePlanDetailView_Previews: PreviewProvider {
static var previews: some View {
ExercisePlanDetailView(exercisePlan: .constant([]))
}
}
尝试这种方法,您只将所需的 exercisePlan 传递给详细信息视图,而不是整个数组:
在ExercisePlanView
中
ForEach($exercisePlan) { $plan in
//..
ExercisePlanDetailView(exercisePlan: $plan)
//...
在ExercisePlanDetailView
中
@Binding var exercisePlan: ExercisePlan
//...
Text(exercisePlan.title)
//...
并在ExercisePlanDetailView_Previews
ExercisePlanDetailView(exercisePlan:.constant(ExercisePlan(title:....)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.