讓我們考慮你已經打開了VC的1,2,3,4,5 比你打開VC 3. 所以,你有這樣的UINavigationController
controllers
堆[1,2,3,4,5,3]
如果要具有迴轉型UIViewController
#3可以只刪除控制器#3,#4和#5(從導航的中間堆棧)在轉換完成#3時。
func viewDidLoad() {
self.navigationController.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: navigationController.viewControllers];
//Navigation stack now is [1, 2, 3, 4, 5, 3]. removing VC#3
[allViewControllers removeObjectAtIndex: 2];
//Navigation stack now is [1, 2, 4, 5, 3]. removing VC#4
[allViewControllers removeObjectAtIndex: 2];
//Navigation stack now is [1, 2, 5, 3].removing VC#5
[allViewControllers removeObjectAtIndex: 2];
//Navigation stack now is [1, 2, 3]
navigationController.viewControllers = allViewControllers;
}
去除雖視圖控制器從導航堆棧,你會回來的過渡,從3比2
我最終這樣做了......嘗試了其他一些方法,但這是最簡單和最乾淨的實現。至少對於我來說。 – Whirlwind
我剛剛在控制檯中發現了一條警告,它說:*完成處於意外狀態的導航轉換。導航欄子視圖樹可能會被損壞。*如果我做popToViewController(vc2,animated:animated),就會發生這種情況。如果我將動畫設置爲false,則消息消失,但後退按鈕也會消失。我想這是一種競爭條件。任何想法如何擺脫這個消息,而不失去一個後退按鈕? – Whirlwind