我在“导航视图”中有一个列表,并带有一个尾随的导航按钮以添加列表项。该按钮将打开一个模式表。当我解开工作表(通过将其拉下)时,工作表会自动再次弹出,然后又无法回到第一个屏幕。这是我的代码。
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”中切换布尔值,但这也不起作用。有什么想法吗?
答案 0 :(得分:0)
原来是将按钮放在navigationBarItems(trailing :)修饰符中的问题。我只是将按钮放在列表本身而不是在导航栏中,它工作得很好。必须是某种错误。