导航视图移动了我的目标视图 SwiftUI

Navigation View moved my destination view SwiftUI

您好,我是 swiftUI 的新手。我正在使用导航视图通过导航 link 在我的视图之间创建导航,我发现了一个问题我不知道这是我的代码中的错误或错误 第一张图片是我的视图,在我的子视图文件中看起来像这样,第二张图片当我在导航中使用它时,它会像这样自动移动

这是我在 parents 视图中的代码

struct OnboardingSet: View {
    
    private var offset : CGFloat = screenFrame.Width
    @State private var currentPage : Int = 0
    @State private var NavigationTag : Int? = nil
    
    var body: some View {
        NavigationView {
            
            NavigationLink(
                destination: SigninView(),
                tag: 1,
                selection: $NavigationTag,
                label: {
                    
                    HStack {
                        OnboardingView(ImageName: Resource.Image.onboarding1, Title: "First, Truth, \nPopular Topic", ButtonTitle: "Skip", TotalPage: 3, CurrentPage: 1) {
                            NavigationTag = 1
                        }
                        OnboardingView(ImageName: Resource.Image.onboarding2, Title: "Fast, Secure, \nMost Loved By User", ButtonTitle: "Skip", TotalPage: 3, CurrentPage: 2) {
                            NavigationTag = 1
                        }
                        OnboardingView(ImageName: Resource.Image.onboarding3, Title: "Feel the \n happiness", ButtonTitle: "sign in", TotalPage: 3, CurrentPage: 3) {
                            NavigationTag = 1
                        }
                    }
                    .offset(x: currentPage == 0 ? offset : 0, y: 0)
                    .offset(x: currentPage == 2 ? -offset : 0, y: 0)
                    .animation(.easeInOut)
                    .gesture(
                        DragGesture(minimumDistance: 5, coordinateSpace: .local)
                            .onEnded({ (value) in
                                if value.translation.width < 0 {
                                    if currentPage != 2 {
                                        currentPage += 1
                                    }
                                }
                                
                                if value.translation.width > 0 {
                                    if currentPage != 0 {
                                        currentPage -= 1
                                    }
                                }
                            })
                    )
                })
        }
    }
    
}

这是我的子视图

struct SigninView: View {
    
    @ObservedObject private var viewModal = SignInViewModal()
    
    var body: some View {
        ZStack {
            Image(Resource.Image.backgroundSignIn)
                .resizable()
                .aspectRatio(contentMode: .fill)
                .blur(radius: 4)
                .offset(x: 200, y: 10.0)
            
            VStack {
                HStack {
                    Text("Hello Unwary \n Reader")
                        .foregroundColor(.white)
                        .font(.system(size: 42))
                        .fontWeight(.black)
                        .padding(.top,64)
                        .padding(.leading)
                        .shadow(color: .black, radius: 16, x: 16, y: 16)
                    Spacer()
                }
                Spacer()
                
                VStack {
                    BlurTextFeild("Email", Text: $viewModal.Email, TextEntryType: .Open)
                        .frame(width: screenFrame.Width - 30, height: 100)
                    
                    BlurTextFeild("Password", Text: $viewModal.Password,TextEntryType: .Secure)
                        .frame(width: screenFrame.Width - 30, height: 100)
                    
                }.padding()
                
                Button(action: {
                    viewModal.AuthState = viewModal.AuthState == SignInViewModal.authState.signIn ? SignInViewModal.authState.signUp : SignInViewModal.authState.signIn
                }, label: {
                    Text(viewModal.AuthState == SignInViewModal.authState.signIn ? "Create Account" : "LogIn")
                        .foregroundColor(.black)
                        .opacity(0.5)
                        .font(.system(size: 18, weight: .bold, design: .rounded))
                })
                
                Spacer()
                
                Button(action: {
                    
                }, label: {
                    ZStack {
                        
                        Blur(effect: UIBlurEffect(style: .regular))
                        
                        Color.black
                            .opacity(0.3)
                        
                        Text(viewModal.AuthState == SignInViewModal.authState.signIn ? "Sign In" : "Sign Up")
                            .foregroundColor(.white)
                            .font(.system(size: 24))
                    }.frame(width: screenFrame.Width - 100, height: 80)
                    .cornerRadius(16)
                }).padding(.bottom,32)
            }.frame(width: screenFrame.Width, height: screenFrame.Height)
        }
        .edgesIgnoringSafeArea(.all)
        .navigationBarBackButtonHidden(true)
        .frame(width: screenFrame.Width, height: screenFrame.Height + 50, alignment: .center)
    }
}

提前致谢

由于缺少许多依赖组件,所提供的代码不可测试,但我建议删除硬编码框架(因为它们使视图不灵活)并仅使用 stacks/alignments/paddings.

重新布局
            }.frame(width: screenFrame.Width - 100, height: 80)    // !!
            .cornerRadius(16)
        }).padding(.bottom,32)
    }.frame(width: screenFrame.Width, height: screenFrame.Height)   // !!
}
.edgesIgnoringSafeArea(.all)
.navigationBarBackButtonHidden(true)
.frame(width: screenFrame.Width, height: screenFrame.Height + 50, alignment: .center)  // !!

在某些情况下,您必须使视图的框架不是核心来解决这个问题,但在我的情况下,问题是我添加了两次导航视图,所以我遇到了这个问题

我删除了辅助视图中的导航视图,它完全解决了我的问题