程序啟動(dòng)后從a ->b ->c
在c頁(yè)面要求點(diǎn)擊某按鈕直接跳到a
使用方法:
[self.navigationController popToViewController [self.navigationController.viewControllers objectAtIndex:n] animated:NO];
n為頁(yè)面的push順序
跳轉(zhuǎn)失敗
提示:Unbalanced calls to begin/end appearance transitions for xxViewController
原因:同一時(shí)間進(jìn)行多次跳轉(zhuǎn)
比如垮衷,掃碼場(chǎng)景钻弄,在a頁(yè)面點(diǎn)擊按鈕進(jìn)行掃碼,通常掃碼完成后要返回a頁(yè)面豺裆,掃碼后通常會(huì)調(diào)用某代理方法來(lái)返回掃碼結(jié)果,在獲取掃碼結(jié)果后跳轉(zhuǎn)到b頁(yè)面号显。
那么這行起來(lái)時(shí)臭猜,如果你想在獲取結(jié)果后立刻跳轉(zhuǎn)到b頁(yè)面你會(huì)發(fā)現(xiàn)出現(xiàn)跳轉(zhuǎn)失敗。
解決方法
已掃碼場(chǎng)景的例子來(lái)說(shuō)押蚤,我們默認(rèn)的跳轉(zhuǎn)順序是先返回到a再跳轉(zhuǎn)到b蔑歌,所以在返回到a頁(yè)面的語(yǔ)句作修改。
[self.navigationController popToRootViewControllerAnimated:NO];
參考:參考1
頁(yè)面跳轉(zhuǎn)方向
//設(shè)置動(dòng)畫(huà)揽碘,使跳轉(zhuǎn)方向?yàn)閺淖髠?cè)進(jìn)來(lái)
//CATransition 對(duì)象創(chuàng)建
CATransition *transition = [CATransition animation];
///時(shí)間間隔 1.0f最慢 0.1f最快
transition.duration = 0.5f;
///動(dòng)畫(huà)的開(kāi)始與結(jié)束的快慢
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//上一行也可以寫(xiě)為 transition.timingFunction = UIViewAnimationCureEasyInOut次屠;
///設(shè)置動(dòng)畫(huà)效果
transition.type = kCATransitionReveal ;
/* type的其他類型:
kCATransitionFade 交叉淡化過(guò)渡
kCATransitionMoveIn 新視圖移到舊視圖上面
kCATransitionPush 新視圖把舊視圖推出去
kCATransitionReveal 將舊視圖移開(kāi),顯示下面的新視圖
*/
///設(shè)置動(dòng)畫(huà)方向
transition.subtype = kCATransitionFromLeft;
/* subtype的其他類型
kCATransitionFromRight; 從右面進(jìn)來(lái)
kCATransitionFromLeft; 從左面進(jìn)來(lái)
kCATransitionFromTop; 從上面進(jìn)來(lái)
kCATransitionFromBottom; 從下面進(jìn)來(lái)
*/
///在想添加CA動(dòng)畫(huà)的VIEW的層上添加此代碼 addAnimation: forKey:
[self.navigationController.view.layer addAnimation:transition forKey:@"transition"];
//注意:將這些代碼加在 navigationController 的 pushViewController:animated: 方法之前,并且加入該代碼后要將pushViewController:animated:方法的animated 參數(shù)傳NO
PSCourierInfoViewController *vc = [[PSCourierInfoViewController alloc] init];
[self.navigationController pushViewController:vc animated:NO];
親測(cè)可用雳刺。劫灶。。掖桦。本昏。
如有問(wèn)題可留言交流!