我在导航视图中有一个列表,带有一个尾随导航按钮来添加列表项。该按钮将打开模式工作表。当我关闭工作表(通过将其向下拉(时,工作表会自动再次弹出,我无法返回第一个屏幕。这是我的代码。
struct ListView: View {
@ObservedObject var listVM: ListViewModel
@State var showNewItemView: Bool = false
init() {
self.listVM = ListViewModel()
}
var body: some View {
NavigationView {
List {
ForEach(listVM.items, id: .dateCreated) { item in
HStack {
Text(item.name)
Spacer()
Image(systemName: "arrow.right")
}
}
}
.navigationBarTitle("List Name")
.navigationBarItems(trailing: AddNewItemBtn(isOn: $showNewItemView))
}
}
}
struct AddNewItemBtn: View {
@Binding var isOn: Bool
var body: some View {
Button(
action: { self.isOn.toggle() },
label: { Image(systemName: "plus.app") })
.sheet(
isPresented: self.$isOn,
content: { NewItemView() })
}
}
我收到此错误:
警告:尝试显示 <_TtGC7SwiftUIP13$7fff2c603b7c22SheetHostingControllerVS_7AnyView_:0x7fc5e0c1f8f0>已显示(空(
我尝试在按钮本身的"onDismiss"中切换布尔值,但这也不起作用。有什么想法吗?
原来把按钮放在导航栏中 栏项(尾随:( 修饰符是问题所在。我只是将按钮放在列表本身而不是导航栏中,它工作得很好。一定是某种错误。