解雇后重新打开SwiftUI模式表

时间:2019-10-11 13:58:42

标签: binding navigation modal-dialog swiftui

我在“导航视图”中有一个列表,并带有一个尾随的导航按钮以添加列表项。该按钮将打开一个模式表。当我解开工作表(通过将其拉下)时,工作表会自动再次弹出,然后又无法回到第一个屏幕。这是我的代码。

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”中切换布尔值,但这也不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

原来是将按钮放在navigationBarItems(trailing :)修饰符中的问题。我只是将按钮放在列表本身而不是在导航栏中,它工作得很好。必须是某种错误。