【问题标题】:SwiftUI change view from first screen to tabview screenSwiftUI 将视图从第一个屏幕更改为 tabview 屏幕
【发布时间】:2021-04-03 15:47:33
【问题描述】:

一旦用户点击“开始”,我想更改视图,但由于在我的第一个视图中有导航视图,它在我的下一个屏幕上显示了我不想要的后退按钮。请参阅下面的图片。

第一个视图的代码如下: 导入 SwiftUI

结构内容视图:查看{

var body: some View {
    NavigationView {
        VStack {
            Spacer()
            Text("LifePath")
                .font(.system(size: 48, weight: .semibold))
                .padding(.bottom)
            Spacer()
            
            
            
            NavigationLink(destination: ViewChanger()) {
                Text("Get Started")
                    .font(.headline)
                    .navigationBarBackButtonHidden(true)
            }
        }
        .padding()
    }
}

}

back button showing on screen 2

First view

【问题讨论】:

    标签: ios swift swiftui swiftui-navigationlink swiftui-navigationview


    【解决方案1】:

    更改您的 navigationBackButtonHidden 修饰符的位置,以便它实际修改您要访问的视图(而不是 NavigationLink 标签):

    struct ContentView: View {
        
        var body: some View {
            NavigationView {
                VStack {
                    Spacer()
                    Text("LifePath")
                        .font(.system(size: 48, weight: .semibold))
                        .padding(.bottom)
                    Spacer()
                    
                    
                    
                    NavigationLink(destination: ViewChanger()
                                    .navigationBarBackButtonHidden(true) // <-- Here
                    ) {
                        Text("Get Started")
                            .font(.headline)
                            
                    }
                }
                .padding()
            }
        }
    }
    

    如果您不仅希望后退按钮消失,还希望整个标题栏消失,您可以使用.navigationBarHidden(true) 修饰符。

    另外,如果您在 iPad 上运行此程序,您可能希望将 .navigationViewStyle(StackNavigationViewStyle()) 添加到您的 NavigationView 外部

    【讨论】:

      【解决方案2】:

      如果您使用 NavigationLink(在 NavigationView 中),则会推送视图。如果要替换视图,可以使用if 语句来完成。

      例如,可以这样实现:

      struct ContentView: View {
          @State var showSecondView: Bool = false
      
          var body: some View {
              if !showSecondView {
                  NavigationView {
                      VStack {
                          Spacer()
                          Text("LifePath")
                              .font(.system(size: 48, weight: .semibold))
                              .padding(.bottom)
                          Spacer()
                  
                          Button(action: { showSecondView = true }) {
                              Text("Get Started")
                                  .font(.headline)
                          }
                  }
                  .padding()
              } else {
                  TabView {
                      // ...
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-05
        • 2020-11-08
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多