页面视图 + 隐藏导航栏不起作用
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 navigationBarHidden
和else
块中同时放入.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)