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

Posted

技术标签:

【中文标题】页面视图 + 隐藏导航栏不起作用【英文标题】:Page View + Hidden Navigation Bar doesn't work 【发布时间】:2021-08-04 16:23:37 【问题描述】:

当我在带有隐藏导航栏标题的导航视图中包含一个作为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 块中触发.onAppear isNavigationBarHidden = true 来强制重绘带有导航标题的视图,但那很臭。

【问题讨论】:

【参考方案1】:

我找到了一个将页面视图包含在列表中的 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、它自己的自定义 View 对象中包含页面视图,但这些都不起作用。我猜它之所以有效,是因为 List 本质上是动态的,所以它会触发全视图重绘?但在我看来,它仍然像 Apple 的错误。

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

【讨论】:

以上是关于页面视图 + 隐藏导航栏不起作用的主要内容,如果未能解决你的问题,请参考以下文章

导航回屏幕时隐藏的 React Native 状态栏不起作用(Android)

透明导航栏不起作用(呈半透明蓝色)

Toggle-btn,右侧导航侧栏不起作用

单击时使用 data-toggle="offcanvas" 关闭导航栏不起作用

粘性导航栏不起作用

离子空白模板默认隐藏附件栏不起作用