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 导航到根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章