页面视图 + 隐藏导航栏不起作用

Page View + Hidden Navigation Bar doesn't work

当我将页面视图作为 written by Apple 包含在带有隐藏导航栏标题的导航视图中时,滑动页面会使标题出现。

struct ContentView: View {
  var body: some View {
    NavigationView {
      PageView(pages: [Text("Foo"), Text("Bar")])
      .navigationBarTitle("Title")
      .navigationBarHidden(true)
    }
  }
}

我尝试添加一个状态变量,使用按钮将 navigationBarHidden Bool 设置为 true,但无济于事。当页面视图翻页时,navigationBarHidden 属性 和 UI 之间的连接似乎断开了。

我能够通过在 if navigationBarHiddenelse 块中插入并触发 .onAppear { isNavigationBarHidden = true } 来强制重绘带有导航标题的视图来破解一些有效的东西else 块,但那很臭。

我找到了一个将页面视图包含在列表中的 hacky 解决方案(这是 Apple 在其 example app 中所做的,这就是我找到它的方式)。

struct ContentView: View {
  var body: some View {
    NavigationView {
      List {
        PageView(pages: [Text("Foo"), Text("Bar")])
      }
      .navigationBarTitle("Title")
      .navigationBarHidden(true)
    }
  }
}

我尝试在 VStack 中包含页面视图、AnyView、它自己的自定义视图对象,其中 none 个有效。我猜这是可行的,因为 List 本质上是动态的,所以它会触发 whole-view 重绘?但对我来说它仍然像一个 Apple bug。

我仍然需要对 UI 进行大量修改,因为我实际上并不想要列表,但这是我能找到的最好的列表。