从导航堆栈中删除viewcontrollers
iphone ios uiviewcontroller uinavigationcontroller
我有一个导航堆栈,有说5 UIViewControllers。我想删除的第三和第四viewcontrollers在堆栈上的一个按钮,在第五的ViewController点击。是否可以这样做呢?如果是的话怎么样?
- 使用此代码,并享受:
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 here
self.navigationController.viewControllers = navigationArray;
[navigationArray release];
希望这会帮助你。 - 你可以先获取数组中的所有视图控制器,然后用相应的视图控制器类检查后,你可以删除你想要的。 下面是一小段代码:
NSArray* tempVCA = [self.navigationController viewControllers];
for(UIViewController *tempVC in tempVCA)
{
if([tempVC isKindOfClass:[urViewControllerClass class]])
{
[tempNavBarItems removeFromParentViewController];
}
}
我认为这将使您的工作更轻松。 - 如果你正试图从第五视图控制器(跳过第3和第4)移动到第二个视图控制器,你想[self.navigationController popToviewController:secondViewController]。 你可以得到secondViewController从导航控制器堆栈。
secondViewController = [self.navigationController.viewControllers objectAtIndex:yourViewControllerIndex];