StoryBoard 导航到根视图控制器

Posted

技术标签:

【中文标题】StoryBoard 导航到根视图控制器【英文标题】:StoryBoard Navigate to Root View Controller 【发布时间】:2013-11-07 16:43:38 【问题描述】:

这是我第一次使用故事板,我设置了大约 5 个带有 UINavigationController 的视图控制器,其中的按钮可以推送到下一个视图控制器。

所以我从 VC1 开始并推到 VC2,然后单击和按钮并推到 VC3,然后单击一个按钮并推到 VC4,依此类推...在最后一个屏幕 (VC5) 我有一个“家”用户可以单击返回主屏幕 (VC1) 的按钮,我已将其设置为推送到 VC1,问题是当用户单击时,他们被带到主屏幕但随后有一个返回按钮在导航栏上,他们可以回到最后一个屏幕吗?在他们点击主页后,他们应该无法返回之前的屏幕,除非像第一次那样导航到它们!

我怎样才能做到这一点?谢谢!我习惯于使用 xib 并以编程方式控制 UINavigationControllers,所以这个 StoryBoard 东西对我来说是非常新的哈哈!

【问题讨论】:

如果你不想要后退按钮,你不想做push,你可以一直弹回到你想要的控制器,或者只是加载旧的老式的方式。 @KevinDiTraglia 我如何在故事板文件中“弹出”?还是必须用代码来完成?如果是这样,我可以添加到 viewController5.m 的代码是什么? 两者都将通过代码隐藏。在导航控制器上查看popViewControllerAnimated @KevinDiTraglia 我从情节提要中的那个按钮中删除了“推送”,然后在我的 .m 文件中添加了[self.navigationController popViewControllerAnimated:YES];,它只把我从 VC5 带回 1 个 ViewController 到 VC4?如何“弹出”到像 VC1 这样的特定 VC? @KevinDiTraglia 明白了! NSArray *array = [self.navigationController viewControllers]; [self.navigationController popToViewController:[array objectAtIndex:0] animated:YES]; 【参考方案1】:

听起来你想要一个放松的转场。在 VC1 .m 文件中添加以下空白方法:

 - (IBAction)unwindToVC1:(UIStoryboardSegue*)sender
 
 

然后在 VC5 的情节提要中,按住 Ctrl 键从主页按钮拖动到视图控制器底部的绿色退出按钮。选择 unwindToMainMenu 选项,它现在应该在按下时返回 VC1,并且不再有返回按钮,因为它已经弹出所有视图控制器。

【讨论】:

太棒了!这和我在 cmets 中得到的答案一样好......也许更好,因为这可能会释放 UIViewController 可能为以前的视图存储的任何内存,以防用户“返回”它们(即使他们可以'不哈哈,但我确定设备不知道!) 我不需要在 .h 中做任何事情,对吧?只将其粘贴在 .m 中并完成它? :) 是的,您不需要 .h 文件中的任何内容(我的项目中不需要,而且效果很好)。很高兴它对你有用:) 我认为有更好的方法,因此我决定不发布作为答案。 在我的情况下,VC5 似乎并没有完全消失。背景音乐仍在播放。我们可以做些什么来在退出时明确释放 VC5?【参考方案2】:

我想你要找的方法是popToRootViewControllerAnimated:

[self.navigationController popToRootViewControllerAnimated:YES];

【讨论】:

以上是关于StoryBoard 导航到根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭相机并导航到根视图控制器?

无法导航到根视图控制器

弹出到根视图控制器时导航栏消失

返回导航到根视图控制器后,折叠的大标题导航栏变得展开

单击按钮导航到根视图控制器

如果我在 Storyboard 中有一个容器视图,是不是可以只将一个视图控制器嵌入到导航控制器中?