我如何能够在视图控制器导航中跳回两步并仍然保留导航?
我有 vc1,它在触摸时移动到 vc2,然后到 vc3。例如,我将如何从 vc3 跳转到 vc1?
谢谢
我如何能够在视图控制器导航中跳回两步并仍然保留导航?
我有 vc1,它在触摸时移动到 vc2,然后到 vc3。例如,我将如何从 vc3 跳转到 vc1?
谢谢
尝试这个
- (IBAction)back{
if(self.navigationController.viewControllers.count>2)
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3] animated:YES];
}
只是一个副本但更安全的方法......试试这样
- (void) turnBackToAnOldViewController{
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[AnOldViewController class]]) {
//Do not forget to import AnOldViewController.h
[self.navigationController popToViewController:controller
animated:YES];
break;
}
}
}
你可以使用这个 -
NSArray *controllers = [self.navigationController viewControllers];
NSLog(@"%@",controllers);
在这里,您可以获得一系列控制器。
int count = [controllers count];
只需传递索引并切换到任何你想要的地方。
UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(count - 2)];
[self.navigationController popToViewController:theControllerYouWant animated:NO];
希望这对你有帮助。谢谢。:)
或者,更灵活的解决方案 - 直接使用导航堆栈。
前任。
NSArray *viewControllers = self.navigationController.viewControllers;
self.navigationController.topViewController = viewControllers[i];
我可以是堆栈控制器中可用的任何 vc。
你应该试试
NSArray *vcArray = [[self navigationController] viewControllers];
[self navigationController popToViewController:[vcArray objectAtIndex:vcArray.count-3] animated:YES];
请尝试这样
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF.class.description == %@“,[[VC1 class]description]];
BOOL exist = [predicate evaluateWithObject:[self.navigationController viewControllers]];
if (exist) {
for (id object in [self.navigationController viewControllers]) {
if ([object isKindOfClass:[VC1 class]]) {
[self.navigationController popToViewController:object animated:YES];
}
}
}