我正在一个视图上使用SwiftUI工作表修改器,该视图有一个从其视图模型发布的集合。当用户单击列表项时,我将为列表中的相应项设置一个可选的State值。工作表修改器使用$selectedSubscription值在需要时显示和隐藏工作表。并将值传递给闭包,以便我在细节视图中使用它。我已经设置了细节视图来接收对列表项的@Binding,以便在稍后阶段编辑它。问题是SwiftUI不允许我将闭包中的项作为绑定传递。
struct SubscriptionsListView: View {
@StateObject var vm = SubscriptionsListVM()
@State private var selectedSubscription: PVSubscription? = nil
var body: some View {
NavigationView {
ZStack {
...
}
.sheet(item: $selectedSubscription) { subscription in
SubscriptionDetailsView(subscription: $subscription) <--- error here
.presentationDetents([.medium, .large])
}
}
}
}
struct SubscriptionDetailsView: View {
@Binding var subscription: PVSubscription
...
}
我已经尝试从数组中获取该项的索引,并将其作为绑定传递,但没有成功。
1条答案
按热度按时间f5emj3cl1#
这个问题是由工作表修饰符的使用引起的。您试图使用“selectedSubscription”变量来显示工作表和模型的细节。您必须创建另一个变量来显示工作表。
因为你的工作表只显示一个视图,你不需要带item参数的工作表修改器。Item参数用于在同一个工作表修改器中显示不同的视图(设置,配置文件等)。它不给予你一个绑定在尾部闭包中放入子视图。