【问题标题】:StoryBoard Navigate to Root View ControllerStoryBoard 导航到根视图控制器
【发布时间】: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];

标签: ios objective-c storyboard


【解决方案1】:

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

 - (IBAction)unwindToVC1:(UIStoryboardSegue*)sender
 {
 }

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

【讨论】:

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

我想你要找的方法是popToRootViewControllerAnimated:

[self.navigationController popToRootViewControllerAnimated:YES];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2014-10-09
    • 2012-07-25
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多