我使用以下代码从navigationcontroller(viewcontrollers)
删除我的登录页面,以便在返回时(后退按钮)不会再次进入视图。
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
if ([[VCs objectAtIndex:[VCs count] - 2] isKindOfClass:[loginViewController class]]&&(VCs.count>=4))
{ [VCs removeObjectAtIndex:[VCs count] - 2];
[VCs removeObjectAtIndex:[VCs count] - 2];
[self.navigationController setViewControllers: VCs];
}
NSLog(@" after :%@",VCs);
}
这适用于我的手机。我尝试了以下代码用于ipad
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.splitViewController.viewControllers];
NSLog(@" bofore :%@",VCs);
if ([[VCs objectAtIndex:[VCs count] - 2] isKindOfClass:[loginViewController class]]&&(VCs.count>=4))
{
[VCs removeObjectAtIndex:[VCs count] - 2];
[VCs removeObjectAtIndex:[VCs count] - 2];
[self.navigationController setViewControllers: VCs];
NSLog(@" after :%@",VCs);
}
}
但在这种情况下,可变阵列VC的内容是UINavigationControllar
个对象。
任何人都知道如何为ipad做同样的事情?提前谢谢..
答案 0 :(得分:0)
在iPhone中 NSMutableArray * VC = [NSMutableArray arrayWithArray:self.navigationController.viewControllers]; 根控制器是一个导航控制器,因此使用上面的语句,您将在其堆栈中获得视图控制器。
在iPad中 NSMutableArray * VC = [NSMutableArray arrayWithArray:self.splitViewController.viewControllers]; 根控制器是一个splitviewcontroller,它包含一组导航控制器,因此您可以在阵列中获得导航控制器。 添加下面的代码行,并使用ViewControllers Array提取自己的viewcontroller。
UINavigationController *navContoller = self.splitViewController.viewControllers[0]; // Get the Navigation Controller
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray: navController.viewControllers];