遇到一個詭異的問題,我的根視圖是Tabbar+navigation,在點擊push到另外頁面的時候,頁面卡住了,導航欄的標題是下個頁面的,view還是當前的,然后我按home鍵,在進入到應用,頁面又正常了。
原因是手勢pop的問題. 當處在navi的根控制器時候, 做一個側滑pop的操作, 看起來沒任何變化, 但是再次push其它控制器時候就會出現(xiàn)上述問題了。這種情況是會出現(xiàn)在我們自定義的navigation中,因為繼承自UINavigation后,原先的右劃手勢被禁掉了,而我們經(jīng)常會加上一句話打開手勢
self.interactivePopGestureRecognizer.delegate = (id)self;
這時候我們如果在跟視圖里面執(zhí)行右劃手勢,相當于執(zhí)行了一個pop。(只是我們沒有看到效果而已),然后接著去執(zhí)行push,自然就push不到下一級頁面了
解決方法,判斷當前頁面是不是根視圖,如果是就禁止掉右劃手勢,如果不是就打開,一般我們controller都會繼承自同一個,在里面寫就行,如下:
//判斷如果是頁面是navigationController中的第一個頁面就禁止左劃手勢,不然在第一個頁面執(zhí)行左劃手勢后在push不到第二個頁面
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (self.navigationController.viewControllers.firstObject == self) {
self.navigationController.interactivePopGestureRecognizer.enabled = false;
}else{
self.navigationController.interactivePopGestureRecognizer.enabled = true;
}
}