0

我刚刚将 Xcode 更新到 12.5 版。从那以后,我的 NavigationLink 代码出现了问题。将出现子视图,但是当我按下取消按钮返回父视图时,我在日志中收到错误消息。

无法呈现。请提交一个错误。

这在 Xcode 12.4 中没有发生。我恢复到 Xcode 12.4,问题就消失了。我安装了 12.5 作为辅助应用程序,并编写了一些通用视图来演示该问题。

我已经阅读并看到,如果我在一个视图上只有两个导航链接,则不会出现问题。但这将是对我的应用程序的重大重新设计......如果有的话,我真的可以使用更好的解决方案。TIA 鲍勃

import SwiftUI

struct SetupMenuView: View {
    
    var body: some View {
        
        NavigationView {
            
            VStack(alignment: .leading) {
                
                Divider().background(Color.black)
  
                NavigationLink(destination: SubView01()) {
                    Text("SubView01")
                        .foregroundColor(.black)
                        .font(.largeTitle)
                }
                .padding(.leading, 25)
                
                Divider().background(Color.black)
                
                NavigationLink(destination: SubView02()){
                    Text("SubView02")
                        .foregroundColor(.black)
                        .font(.largeTitle)
                }
                .padding(.leading, 25)
                
                Divider().background(Color.black)
                
                NavigationLink(destination: SubView03()) {
                    Text("SubView03")
                        .foregroundColor(.black)
                        .font(.largeTitle)
                }
                .padding(.leading, 25)
                
                Divider().background(Color.black)
                
                NavigationLink(destination: SubView04()) {
                    Text("SubView04")
                        .foregroundColor(.black)
                        .font(.largeTitle)
                }
                .padding(.leading, 25)
                
                Divider().background(Color.black)
                //                }
            } // VSTACK END
            .padding(.top, 25)
            .frame(minWidth: 0,
                   maxWidth: .infinity,
                   minHeight: 0,
                   maxHeight: .infinity,
                   alignment: .topLeading
            )
            .navigationBarTitle("SubView Menu Setup", displayMode: .inline)
        }
        .navigationViewStyle(StackNavigationViewStyle())
        
    }
    
}

struct SetupMenuView_Previews: PreviewProvider {
    static var previews: some View {
        SetupMenuView()
    }
}
import SwiftUI

struct SubView01: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        
        ZStack {
            VStack {
                Text("This is the sub view 01.")
                    .font(.largeTitle)
            }
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle("SubView01", displayMode: .inline)
        .navigationBarItems(
            leading:
                Button(action: {
                    self.presentationMode.wrappedValue.dismiss()
                }, label: {
                    Text("Cancel")
                })
            ,
            trailing:
                HStack {
                    EditButton()
                        .padding()
                }
        )
    }
}

struct SubView01View_Previews: PreviewProvider {
    
    static var previews: some View {
        SubView01()
    }
}

import SwiftUI

struct SubView02: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        
        ZStack {
            VStack {
                Text("This is the sub view 02.")
                    .font(.largeTitle)
            }
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle("ASubView02",displayMode: .inline)
        .navigationBarItems(
            leading:
                Button(action: {
                    self.presentationMode.wrappedValue.dismiss()
                }, label: {
                    Text("Cancel")
                })
            , trailing:
                HStack {
                    EditButton()
                        .padding()
                }
        )
    }
}

struct SubView02_Previews: PreviewProvider {
    
    static var previews: some View {
        SubView02()
    }
}

import SwiftUI

struct SubView03: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        ZStack {
            VStack {
                Text("This is the sub view 03.")
                    .font(.largeTitle)
            }
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle("SubView03", displayMode: .inline)
        .navigationBarItems(
            leading:
                Button(action: {
                    self.presentationMode.wrappedValue.dismiss()
                }, label: {
                    Text("Cancel")
                })
            ,
            trailing:
                HStack {
                    EditButton()
                        .padding()
                }
        )
    }
}

struct SubView03_Previews: PreviewProvider {
    static var previews: some View {
        SubView03()
    }
}

import SwiftUI

struct SubView04: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        ZStack {
            VStack {
                Text("This is the sub view 04.")
                    .font(.largeTitle)
            }
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle("SubView04", displayMode: .inline)
        .navigationBarItems(
            leading:
                Button(action: {
                    self.presentationMode.wrappedValue.dismiss()
                }, label: {
                    Text("Cancel")
                }
                )
            ,
            trailing:
                HStack{
                    EditButton()
                        .padding()
                }
        )
    }
}


struct SubView04_Previews: PreviewProvider {
    static var previews: some View {
        SubView04()
    }
}

4

0 回答 0