objective-c - 如何弹回 rootViewController +1?
问题描述
我需要弹回许多视图,但不是一直返回到根控制器,除了使用以下方法一直返回之外,我找不到其他方法
[self.navigationController popToRootViewControllerAnimated:YES];
我如何弹回 root + 1 ?
解决方案
如果您知道要支持的视图控制器。
UIViewController *targetVC = XXViewController.class ;
NSArray <UIViewController *>*vcs = self.navigationController.viewControllers ;
[vcs enumerateObjectsUsingBlock:^(UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:targetVC.class]) {
[self.navigationController popToViewController:obj animated:YES];
*stop = YES ;
}
}];
如果您知道要备份的索引。
NSInteger index = 1 ;
[self.navigationController popToViewController:vcs[index] animated:YES];
跟随不重要
当前您在导航中有 AA,BB 两个视图控制器。您转到 DD viewcotrlooer 并且不想在返回时显示最后一个视图控制器。当您弹出 DD viewcotrller 时,您可以使用以下代码。最重要的是支持侧滑。
[self skipCurrentViewcontrollerToViewcontroller:DD.new];
- (void)skipCurrentViewcontrollerToViewcontroller:(UIViewController *)toVC
{
if (self.navigationController == nil) {
NSAssert(NO, @"the navigation is empty!");
return ;
}
NSArray *vcArray = self.navigationController.viewControllers ;
if (vcArray.count > 0) {
NSMutableArray *desArray = [NSMutableArray arrayWithCapacity:4];
for (int i = 0 ;i < vcArray.count - 1 ; i++) {
[desArray addObject:vcArray[i]];
}
[desArray addObject:toVC];
[self.navigationController setViewControllers:desArray animated:YES];
}
else{
[self.navigationController pushViewController:toVC animated:YES];
}
}
推荐阅读
- javafx - JAVAFX Stage:默认按钮选择和文本填充对齐
- c# - 集成测试:验证通过的任何内容
- kubernetes - 在 Istio 中配置 EnvoyFilter 以转发客户端证书
- python - 在烧瓶中传递列表类型的 URL 参数
- python - 如何在烧瓶应用程序中使用 MySQL 从用户输入将数据存储在我的数据库中。我收到一个错误
- python - 气流作业的 schedule_interval
- javascript - jQuery 中的 Accordion 让用户突然向上滚动页面
- python - 使用 python 执行命令提示符命令,但没有显示外部 matplotlib 窗口
- sql - 如何使用 Ruby on Rails 查询计算 SQL 数组中的元素
- javascript - vue-fullscreen 在 iframe 中不起作用