Iphone 是否返回到UINavigationController的第一个索引?

Iphone 是否返回到UINavigationController的第一个索引?,iphone,ios,sdk,uinavigationcontroller,Iphone,Ios,Sdk,Uinavigationcontroller,我正在执行一个使用UINavigationController的应用程序,并切换到其他UIViewController,如下所示: if(self.myViewController == nil){ MyViewController *aViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; self.myViewController = aViewCo

我正在执行一个使用UINavigationController的应用程序,并切换到其他UIViewController,如下所示:

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中创建一堆UIViewController,可能是一个索引数组?我想知道如何转身而不必一个接一个地回来

例如,我在几个屏幕上浏览,并使用一个按钮返回导航的第一个索引。我还想知道如何修改索引,查看,删除和任何有关这个问题

对不起,我解释得不好

[self.navigationController popToRootViewControllerAnimated:YES];
将带您回到第一个视图控制器(根视图控制器)


希望这对您有所帮助

您应该使用
popToRootViewControllerAnimated:
From

弹出堆栈上除根视图之外的所有视图控制器 控制器并更新显示

NSArray*viewControllers=[[self-navigationController]viewControllers];
对于(int i=0;i<[viewcontlls计数];i++){
id obj=[viewControllers objectAtIndex:i];
if([obj是类的一种:[yourViewControllername类]]){
[[self-navigationController]popToViewController:obj动画:是];
返回;
}
}
使用此选项,您可以返回任何指定的viewController。

使用此选项

NSArray *viewContrlls=[[NSArray alloc] initWithArray:[[self navigationController] viewControllers]];
    id obj=[viewContrlls objectAtIndex:1];
    [[self navigationController] popToViewController:obj animated:YES];
    [viewContrlls release];

您可以使用返回到第一个视图

[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;

你问了两个问题

首先,我如何回到我的第一个视图控制器。正如@Thomas Clayson和@ender所回答的,您需要navigationcontroller对象的
PoptorootViewController初始化:
方法

第二个问题是如何移动到视图控制器堆栈中的特定索引。答案是,可以显式设置ViewController数组。因此,您可以拉出视图控制器的当前列表,对其进行修改,然后将其设置回navigationController堆栈。它将重置堆栈并设置动画,使您移动到堆栈中的顶部项目

因此:

NSMutableArray *controllers = self.navigationController.viewControllers;
[controllers removeObjectAtIndex:[controllers count] - 1]; //or whatever
[self.navigationController setViewControllers:controllers animated:YES];

如果我想你去导航控制器的指定索引?
NSMutableArray *controllers = self.navigationController.viewControllers;
[controllers removeObjectAtIndex:[controllers count] - 1]; //or whatever
[self.navigationController setViewControllers:controllers animated:YES];