iOS - 弹出两个或更多控制器,但不是顶部

时间:2016-06-22 12:04:41

标签: ios uiviewcontroller uinavigationcontroller

我有以下情况:

A(Bottom) -> B -> C -> D(Top)

一旦我在顶部(D控制器)我想弹出B和C控制器。在这种情况下,当我从D向后按时,我可以回到A。

它甚至可以吗?

4 个答案:

答案 0 :(得分:1)

是的,你可以,在推送到D viewController实现这个

后需要更改导航堆栈
NSMutableArray *navigationStack = [D.navigationController.viewControllers mutableCopy];
[navigationStack removeObject:B];
[navigationStack removeObject:C];
[D.navigationController setViewControllers:navigationStack animated:NO];

弹回后你会回到A

答案 1 :(得分:1)

您也可以这样做以从D弹出到A.

navCon.popToViewController(navCon.viewControllers[navCon.viewControllers.count - 4], animated: true)

或者如果您有对A

的引用
navCon.popToViewController(aViewController, animated: true)

答案 2 :(得分:0)

uinavigationcontroller中有一个清理导航堆栈的方法: " - popToRootViewControllerAnimated:" 使用此方法,如果从D调用它,则直接弹出到A. 如果你想要一个更加个性化的导航,比如"我只想弹出2个以前的控制器"或类似的东西,你必须建立像@iSashok那样的堆栈。

答案 3 :(得分:0)

for item in self.navigationController!.viewControllers {
    // Filter for your desired view controller:
    if item.isKind(of: SchedulesViewController.self) { 
        self.navigationController?.popToViewController(item, animated: true)
    }
}