【发布时间】:2021-09-19 05:42:29
【问题描述】:
我有一个基于 MyBootomSheet 中的 2 个绑定变量的条件视图。 想法是,如果在父视图中选择了一个项目,则显示详细视图,否则显示项目列表。
ParentView 具有选择/取消选择项目的逻辑。 该代码首次按预期工作。但是一旦在父视图中选择了一个项目,视图就永远不会再更新,即使在另一个项目被选中或项目被取消选择之后。
知道如何解决这个问题吗?
TIA!
struct ParentView: View {
@StateObject var dataSource = MapViewSource()
@State var selectedItem:SomeModel? = nil
var body: some View {
//
}.bottomSheet() {
MyBottomSheet(items:self.$dataSource.items, selectedItem:self.$selectedItem)
}
}
struct MyBottomSheet: View {
@Binding var items:[SomeModel]
@Binding var selectedItem:SomeModel?
var body: some View {
if self.selectedItem != nil {
ItemDetail(item: self.selectedItem!)
}
else {
List(self.items id: \.itemId) { item in
ItemRow(item: item)
}
}
}
}
【问题讨论】:
-
使用 ObservedObject 或 EnvironmentObject 传递 ObservableObject vs Binding
标签: swiftui