SwiftUI桥UIPageViewController后,NavigationBar不消失问题

由于swiftUI低版本(iOS 13)没有现成的UI只能先尝试去桥老的UIPageViewController,但是这个问题居然成了我今天的梦魇弄了整整一天。。。

问题产生情景

1 a页 跳 b页
2 设置了navigationBarHidden(true)

异常状态

滑动UIPageViewController时,已经hidden的navigationBar又重现了

尝试

多处加navigationBarHidden(true),无用
监听UIPageViewController中的scrollView,拦截setHidden,无用
。。。
各种方法都试过了,pageController一滑动的时候就被重新设置了一个navigationController

灵感

官方文档貌似有类似的场景,但是敲代码的时候好像没有类似bug产生,燃起希望

初步解决

be like: a -> b

a:

NavigationView{
    let b = controller()
    b.navigationBarHidden(true)
    link:b
}

b:
错误姿势

//不行额!!  这样能b不能返回a
NavigationView {
    ZStack{
       custom navigationBar
       pageController
       ...
    }

}

正确姿势

//能b返回a
ZStack{
       custom navigationBar
       //只框住
       NavigationView {
          pageController
       }
      
       ...
}

啰嗦了半天,最后

大家有其他好的解决方案可以分享
2022.2.16
新的解决方案

        //对a, b设置navigationBarHidden
        let a = AnyView(TestRedView()).navigationBarHidden(true)
        let b = AnyView(TestBlueView()).navigationBarHidden(true)
        
        return PaginationView(pages: [a, b])
            .navigationBarTitle(Text("Test"), displayMode: .inline)
            .navigationBarHidden(true)
            .edgesIgnoringSafeArea(.all)





真的最后了了

我一开始发现了stackoverflow上有一个人跟我遇到了相同的情况但是无人作答,后面我写了个答案
附上地址大家方便追踪看有没有新的进展

你可能感兴趣的:(SwiftUI桥UIPageViewController后,NavigationBar不消失问题)