【问题标题】:Content of NavigationView not showing up SwiftUINavigationView 的内容未显示 SwiftUI
【发布时间】:2019-12-23 19:53:22
【问题描述】:

我正在尝试在 SwiftUI 中创建一个带有单个 NavigationLink 的 NavigationView。到目前为止我的代码是:

import SwiftUI

struct HomeView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: PlayersView()) {
                Text("Players")
                    .foregroundColor(.white)
                    .padding(12)

            }
            .background(Color.black)
            .cornerRadius(12)


            .navigationBarTitle(Text("Home"))
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        HomeView()
    }
}

在实时预览中或在模拟器上运行时不会显示任何内容。实时预览如下所示:

如果我稍微更改代码并复制 NavigationLink,那么我可以让其中一个 NavigationLink 出现。

struct HomeView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: PlayersView()) {
                Text("Players")
                    .foregroundColor(.white)
                    .padding(12)

            }
            .background(Color.black)
            .cornerRadius(12)

            NavigationLink(destination: PlayersView()) {
                Text("Players")
                    .foregroundColor(.white)
                    .padding(12)

            }
            .background(Color.black)
            .cornerRadius(12)

            .navigationBarTitle(Text("Home"))
        }
    }
}

我正在尝试创建一个主页,其中包含指向其他 SwiftUI 屏幕视图文件的多个链接。任何帮助表示赞赏!

谢谢。

【问题讨论】:

  • 这是关于 iPad 方向的,请参阅我的答案以获取更新的详细信息。

标签: swift xcode swiftui


【解决方案1】:

不是这个

NavigationLink(destination: PlayersView()) {
    Text("Players")
        .foregroundColor(.white)
        .padding(12)

}
.background(Color.black)
.cornerRadius(12)

这样做

NavigationLink(destination: PlayersView()) {
    Text("Players")
        .foregroundColor(.white)
        .padding(12)
        .background(Color.black)
        .cornerRadius(12)
}

更新:我想我遇到了你的问题,起初我只是自动通过了。 NavigationView 是特定于平台的。默认情况下,iPad 具有 Master/Details 导航样式,根据方向具有不同的呈现方式,因此您不会在 Preview 中看到您的链接,因为 Preview 是 Portrait 并且导航链接在 Sidebar 中,它是隐藏的。

如果你想在这样的预览中看到它,你需要使用.navigationViewStyle(StackNavigationViewStyle()) 代替NavigationView。或者,在您的变体中,只需在模拟器中运行应用程序并使用 CMD-Left/Right arrow 旋转模拟器。

注意:不能旋转预览或现在。以防万一。

【讨论】:

  • 感谢您的回复,但这并没有什么不同。
  • 在导航视图中添加.navigationViewStyle(StackNavigationViewStyle()) 解决了这个问题!
【解决方案2】:

如果您使用的是 iPad,我想说第一个 navigationLink 用作草图/索引视图,您可以通过向右滑动来将其取出。

【讨论】:

    【解决方案3】:

    试试这个,我最初也有问题,但尝试这种方式对我有用!

      var body: some View 
      {
          NavigationView 
         {
               VStack(alignment: .center)
                  {
                      //Your ui designs
                  } 
           .navigationBarTitle(Text("Forgot 
            Password").font(.largeTitle).fontWeight(.medium), displayMode: .inline)
    
          }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 2020-11-06
      • 2020-12-05
      • 1970-01-01
      相关资源
      最近更新 更多