如何在视图控制器时间线中跳回两步?

Posted

技术标签:

【中文标题】如何在视图控制器时间线中跳回两步?【英文标题】:How to jump back two steps in the view controller timeline? 【发布时间】:2013-11-14 12:10:19 【问题描述】:

如何在视图控制器导航中跳回两步并仍然保留导航?

我有 vc1,它在触摸时移至 vc2,然后移至 vc3。例如,我将如何从 vc3 跳转到 vc1?

谢谢

【问题讨论】:

***.com/questions/3027559/… google.co.in/… @hanumanDev 这些提示对您没有帮助...?然后更多地解释您的问题,或者如果您找到任何更好的方法来做到这一点,那么在此处发布它将对其他人有所帮助。 【参考方案1】:

试试这个

    - (IBAction)back
if(self.navigationController.viewControllers.count>2)
    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3] animated:YES];

【讨论】:

【参考方案2】:

只是一种复制但更安全的方法...尝试这样

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


【讨论】:

【参考方案3】:

你可以用这个 -

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

希望对你有帮助。谢谢。:)

【讨论】:

完美答案。为我工作。【参考方案4】:

或者,更灵活的解决方案 - 直接使用导航堆栈。

例如

 NSArray *viewControllers = self.navigationController.viewControllers;
 self.navigationController.topViewController = viewControllers[i];

其中 i 可以是堆栈控制器中可用的任何 vc。

【讨论】:

【参考方案5】:

你应该试试

NSArray *vcArray = [[self navigationController] viewControllers];
[self navigationController popToViewController:[vcArray objectAtIndex:vcArray.count-3] animated:YES];

【讨论】:

【参考方案6】:

请这样尝试

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

【讨论】:

以上是关于如何在视图控制器时间线中跳回两步?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Selenium 和 Python 在控制台中跳过调试日志

从标签栏控制器跳回导航控制器 - swift 4

使 WebView 在 iOS 中跳转

如何将 FPPopover 移动到我想要的最低位置?如果我把它推得太低,它会跳回顶部

在更改其嵌套的 UILabel 时移动 UIView 会导致视图跳回初始位置

如何在函数调用中跳过可选参数?