我正在做一个使用UINavigationController的应用程序,我正在切换到其他UIViewControllers,如下所示:
if(self.myViewController == nil){
MyViewController *aViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
self.myViewController = aViewController;
[aViewController release];
}
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.myNavController pushViewController:myViewController animated:YES];
我想这是在UINavigationController中创建一堆UIViewControllers,也许是一个索引数组?我想知道怎么回头而不必一个接一个地回来。
例如,我正在通过几个屏幕航行,并且我想在第一个导航索引处返回一个按钮。我还想知道如何修改索引,查看,擦除以及与此问题有关的任何内容。
很抱歉,如果我没有解释清楚。
答案 0 :(得分:8)
你问了两个问题。
首先,我如何回到我的第一个视图控制器。正如@Thomas Clayson和@ender所回答的那样,你需要你的navigationcontroller对象的popToRootViewControllerAnimated:
方法。
第二个是如何移动到视图控制器堆栈中的特定索引。答案是,您可以显式设置viewControllers数组。因此,您可以拉出视图控制器的当前列表,修改它,并将其设置回navigationController堆栈。它将重置堆栈并动画移动到堆栈中的顶部项目。
所以:
NSMutableArray *controllers = self.navigationController.viewControllers;
[controllers removeObjectAtIndex:[controllers count] - 1]; //or whatever
[self.navigationController setViewControllers:controllers animated:YES];
答案 1 :(得分:6)
NSArray *viewControllers = [[self navigationController] viewControllers];
for (int i = 0; i < [viewContrlls count]; i++){
id obj = [viewControllers objectAtIndex:i];
if ([obj isKindOfClass:[yourViewControllername class]]){
[[self navigationController] popToViewController:obj animated:YES];
return;
}
}
使用此功能,您可以返回任何指定的viewController。
答案 2 :(得分:4)
[self.navigationController popToRootViewControllerAnimated:YES];
将带您回到第一个视图控制器(根视图控制器)。
希望这有帮助
答案 3 :(得分:2)
使用此
NSArray *viewContrlls=[[NSArray alloc] initWithArray:[[self navigationController] viewControllers]];
id obj=[viewContrlls objectAtIndex:1];
[[self navigationController] popToViewController:obj animated:YES];
[viewContrlls release];
答案 4 :(得分:1)
您应该使用popToRootViewControllerAnimated:
来自UINavigationController
class reference:
弹出除根视图外的堆栈上的所有视图控制器 控制器并更新显示。
答案 5 :(得分:1)
您可以使用
返回第一个视图[self.navigationController popToRootViewControllerAnimated:YES];
话虽如此,您还可以删除特定的视图控制器,或者如果查看示例,则可以导航到视图控制器中的特定索引。
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray:navigationController.viewControllers];
// You can now manipulate this array with the methods used for NSMutableArray to find out / perform actions on the navigation stack
[allViewControllers removeObjectIdenticalTo: removedViewController];
// You can remove a specific view controller with this.
navigationController.viewControllers = allViewControllers;