美文网首页SwiftUI
SwiftUI桥UIPageViewController后,Na

SwiftUI桥UIPageViewController后,Na

作者: 捕梦人 | 来源:发表于2021-12-06 23:13 被阅读0次

    由于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后,Na

        本文链接:https://www.haomeiwen.com/subject/irtoxrtx.html