从导航堆栈中删除视图控制器

我有一个导航堆栈,说5个UIViewControllers。我要在第五个视图控制器中单击一个按钮,以删除堆栈中的第三个和第四个视图控制器。是否有可能做到这一点?如果可以,怎么办?



青春有我
浏览 658回答 3
3回答

慕哥6287543

使用此代码并享受:NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];// [navigationArray removeAllObjects];    // This is just for remove all view controller from navigation stack.[navigationArray removeObjectAtIndex: 2];  // You can pass your index hereself.navigationController.viewControllers = navigationArray;[navigationArray release];希望这会帮助你。编辑:Swift代码guard let navigationController = self.navigationController else { return }var navigationArray = navigationController.viewControllers // To get all UIViewController stack as ArraynavigationArray.remove(at: navigationArray.count - 2) // To remove previous UIViewControllerself.navigationController?.viewControllers = navigationArray

12345678_0001

您可以首先获取数组中的所有视图控制器,然后在检查了相应的视图控制器类之后,可以删除所需的视图控制器。这是一小段代码:NSArray* tempVCA = [self.navigationController viewControllers];for(UIViewController *tempVC in tempVCA){    if([tempVC isKindOfClass:[urViewControllerClass class]])    {        [tempVC removeFromParentViewController];    }}我认为这会使您的工作更轻松。

红糖糍粑

斯威夫特3&4/5self.navigationController!.viewControllers.removeAll()self.navigationController?.viewControllers.remove(at: "insert here a number")斯威夫特2.1移除所有:self.navigationController!.viewControllers.removeAll()从索引处删除self.navigationController?.viewControllers.removeAtIndex("insert here a number")还有很多其他可能的动作,例如removeFirst,range等。
打开App,查看更多内容
随时随地看视频慕课网APP