第二视图中的 NavigationTitle 未出现

NavigationTitle in second view not appearing

我是 IOS-app 开发的新手。我创建了(虽然是在指南的帮助下)一个功能齐全的登录页面。

只要完成用户身份验证,用户就会被转发到 HomepageView()

但是,我了解到在第二个视图中同时创建 NavigationView 是不好的做法。 (因为这样标题就被压低了很多)。

但是,如果我在第二个视图中不包含 NavigationView,则标题根本不会显示。

我将在下面包含我的两个观点的代码

视图 1

    var body: some View {
    
    NavigationView{
        
        ScrollView{
            
            // LINK TO GO TO HOMESCREEN (Activated once login is succesfull)
            NavigationLink(destination: HomepageView(uid: self.uid), isActive: $moveToHomeView, label: {
                EmptyView()
            })
            
            VStack(spacing: 16){
                Picker(selection: $isLoginMode, label: Text("Picker here")){
                    Text("Sign In")
                    // this .tag changes isLoginMode to true
                        .tag(true)
                    Text("Create Account")
                    // this .tag changes isLoginMode to false
                        .tag(false)
                }
                .pickerStyle(SegmentedPickerStyle())
                
                if !isLoginMode {
                    Button{
                        // Action
                        shouldShowImagePicker.toggle()
                    }label:{
                        VStack{
                            // Selected image
                            if let image = self.image {
                                Image(uiImage: image)
                                    .resizable()
                                    .scaledToFill()
                                    .frame(width: 128, height: 128)
                                    .cornerRadius(64)
                            }else{
                                // Standard icon
                                Image(systemName: "person.fill")
                                    .font(.system(size: 64))
                                    .padding()
                            }
                        }
                        .overlay(RoundedRectangle(cornerRadius: 64)
                                    .stroke(lineWidth: 3))
                    }
                }
                
                // In a Group you can put multiple items and style them the same way.
                Group{
                    TextField("Email", text: $email)
                        .keyboardType(.emailAddress)
                        .autocapitalization(.none)
                    SecureField("Password", text: $password)
                }
                .padding(12)
                .background(Color.white)
                
                Button{
                    // Btn action here
                    handleAction()
                } label: {
                    HStack{
                        Spacer()
                        Text(isLoginMode ? "Sign In" : "Create Account")
                            .foregroundColor(.white)
                            .padding(.vertical, 10)
                        Spacer()
                    }.background(Color.blue)
                }
                
                Text(self.loginStatusMessage)
                    .foregroundColor(.red)
                
            }
            .padding()
        }
        .navigationTitle(isLoginMode ?  "Sign In" : "Create Account")
        .background(Color(.init(white: 0, alpha: 0.05))
                        .ignoresSafeArea())
    }
    
    // FULL SCREEN COVER FOR IMAGE PICKER
    .fullScreenCover(isPresented: $shouldShowImagePicker, onDismiss: nil){
        ImagePicker(image: $image)
    }
}

此代码创建以下内容:

然后当我创建第二个视图时(用户登录后将转到的视图)看起来像这样:

视图 2:(单独文件)

struct HomepageView: View {

var uid: String

var body: some View {
    
    VStack {
        Text("Hey, \(uid)")
    }
    .navigationTitle("Why does this not work?")
        
}}

此代码创建以下内容:

为什么视图 2 不显示 .navigationTitle

我已经坚持了很长时间了。非常感谢任何帮助!

谢谢你,祝你有愉快的一天!

NavigationView 未显示在预览中,因为您的第二个视图没有。没关系。就像你提到的,你不想在这里添加一个。

当您 运行 实际应用时,如果之前的视图有 NavigationView,您的第二个视图也会有。