側(cè)滑手勢頁面越級返回問題

之前控制器從A->B->C,然后在C點擊返回按鈕的時候需要跳過B直接返回到A,常用的方法就是給返回按鈕添加自定義事件,調(diào)用popToViewController方法。

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

但是給頁面添加了側(cè)滑返回手勢UIScreenEdgePanGestureRecognizer之后,如果通過側(cè)滑手勢返回的話,這個方法就不好使了,因為頁面直接從C滑到了B。

看網(wǎng)上有人說需要做一個假動畫,然后再進行越級跳轉(zhuǎn)的操作,感覺比較費事,就沒仔細研究,看到另外一種思路挺好的:
在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側(cè)滑返回的時候就回到了A,同時C中的導(dǎo)航欄左側(cè)的返回按鈕也不需要自定義返回事件了

其他側(cè)滑返回手勢遇到的問題,可以看下:
屏幕邊緣側(cè)滑返回手勢 UIScreenEdgePanGestureRecognizer

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容