无堆叠推送视图控制器

Posted

技术标签:

【中文标题】无堆叠推送视图控制器【英文标题】:Push view controller without stacking 【发布时间】:2013-09-02 21:25:07 【问题描述】:

有什么方法可以将视图控制器推送到导航控制器而不堆叠它?

想要的行为(堆栈表示):

[VC1[VC2]] -> 从 VC2 推送 VC3 -> [VC1[VC3]]

【问题讨论】:

我认为这叫做替换segue 【参考方案1】:

是的,只需像这样弹出另一个(不设置动画):

[navController popViewControllerAnimated:NO]
[navController pushViewController:VC3 animated:YES]

或者选择更通用的选项 2:替换 viewControllers 属性:

NSArray *newControllers = @[VC1, VC3];
[navController setViewControllers:newControllers animated:YES];

或者...

NSArray *newControllers = @[navController.viewControllers[0], VC3];
[navController setViewControllers:newControllers animated:YES];

【讨论】:

【参考方案2】:

我会使用 UINavigationController 的方法:

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated

这样你就可以做到这一点:

UINavigationController *navigationController = [self navigationController];
[navigationController setViewControllers:@[navigationController.viewControllers[0], VC3] animated:YES];

这将为您提供新视图控制器 (VC3) 的推送动画。

【讨论】:

以上是关于无堆叠推送视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

TableView 使用 Xcode 4 快速多点触控

iOS Swift:如何实现类似用户界面的堆叠卡片?

堆叠 presentViewController 后 statusBarFrame = 0

双向故事板旅行,无需堆叠

从父视图控制器再次推送时,子视图框架发生变化

我如何使用推送方法(无 segue)将数据从一个 vc 传递到另一个 vc - 已关闭