美文网首页iOS基础篇
侧滑手势页面越级返回问题

侧滑手势页面越级返回问题

作者: Tony_Yang | 来源:发表于2017-12-26 10:34 被阅读90次

    之前控制器从A->B->C,然后在C点击返回按钮的时候需要跳过B直接返回到A,常用的方法就是给返回按钮添加自定义事件,调用popToViewController方法。

    func goback() {
        if let viewControllers = navigationController?.viewControllers {
            for vc in viewControllers {
                if vc is A {
                    navigationController?.popToViewController(vc, animated: true)
                    break
                }
            }
        }
    }
    

    但是给页面添加了侧滑返回手势UIScreenEdgePanGestureRecognizer之后,如果通过侧滑手势返回的话,这个方法就不好使了,因为页面直接从C滑到了B。

    看网上有人说需要做一个假动画,然后再进行越级跳转的操作,感觉比较费事,就没仔细研究,看到另外一种思路挺好的:
    在B->C push的时候,
    [B.navigationController setViewControllers:@[A, C] animated:YES];

    // B->C
    func jumpToC() {
        self.navigationController?.pushViewController(C, animated: true)
        let count = self.navigationController?.viewControllers.count ?? 0
        self.navigationController?.viewControllers.remove(at: count - 2)
    }
    

    这样由于ViewControllers中只有A,C,干掉了B,所以从C侧滑返回的时候就回到了A,同时C中的导航栏左侧的返回按钮也不需要自定义返回事件了

    其他侧滑返回手势遇到的问题,可以看下:
    屏幕边缘侧滑返回手势 UIScreenEdgePanGestureRecognizer

    相关文章

      网友评论

        本文标题:侧滑手势页面越级返回问题

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