SwiftUI,navigationBarItems以编程方式取消模式后无法正常工作

时间:2020-06-28 14:25:04

标签: swift swiftui

使用SwiftUI,

我展示了一个模态,然后以编程方式将其关闭。 问题是第二次navigationBarItems没有响应,我再也不能按了。

如果我使用滑动手势关闭了模态,那么它可以正常工作,但是当我打电话给self.presentationMode.wrappedValue.dismiss()

时却无法正常工作

HomeView.swift

struct HomeView: View {
    @Environment(\.managedObjectContext) var moc;
    
    @State private var isSureToResetCounter = false;
    var body: some View {

        func handleLeadingBtnPress() -> Void {
            self.isSModalPresented = true;
        }
                
        return
            NavigationView {
                VStack(alignment: .center, spacing: 20.0) {
                    Spacer(minLength: 10)
                  // ...
                }
                .padding(20)
                .background(Color.secondary)
                .edgesIgnoringSafeArea(.all)
                .navigationBarTitle(Text(""), displayMode: .inline)
                    
                .navigationBarItems(
                    leading:
                    Button(action: handleLeadingBtnPress) {
                        Text("Save")
                            .foregroundColor(.textPrimary)
                    }.sheet(isPresented: self.$isSModalPresented) {
                        SaveModalView()
                            .environment(\.managedObjectContext, self.moc)
                            .modifier(SystemServices())
                    }, trailing:
                    NavigationLink(destination: ActivityListView()) {
                        Text("History")
                            .foregroundColor(.textPrimary)
                })
                    .gesture(tap)
        }
    }
}

SaveModalView.swift

struct SaveModalView: View {
    @Environment(\.presentationMode) private var presentationMode
    @Environment(\.managedObjectContext) var moc;
    //...
    func handleSaveActivity() -> Void {        
        let newActivity = Activity(context: self.moc);
        do {
            try moc.save();
        } catch {
            print("coulnd save activity")
        }
        AppStoreReviewManager.requestReviewIfAppropriate();
        self.presentationMode.wrappedValue.dismiss()
    }
//...

我在做什么错了?

编辑:该错误似乎仅在模拟器上发生。

1 个答案:

答案 0 :(得分:0)

这是SwiftUI在某些Xcode版本上的已知错误。我建议您尝试使用最新版本的Xcode,看看是否能解决问题。