【问题标题】:Global Unwind Segue全球放松赛格
【发布时间】:2015-04-03 06:53:51
【问题描述】:

我有一个可以在应用程序外部触发的重置通知,并且用户正在执行的任何操作都将退出并返回主屏幕,因为数据已变为无效。目前,我必须在每个视图控制器中放置展开转场,但我只想在发生此通知时以编程方式调用全局 performSegueWithIdentifier。有相当多的视图控制器,在任何地方都必须复制这段代码并不是很好,随着新的视图控制器被添加到项目中,这将成为一个维护问题。有没有一种简单的方法可以做到这一点?

【问题讨论】:

  • 您在应用程序中的导航情况如何?通过导航控制器?如果是这样,你不能做一个popToRootViewController吗?
  • 有趣,是的,它是一个导航控制器,其他的是标签视图和页面视图。
  • 听起来像 self.navigationController.popToRootViewController 在这种情况下可以解决您的问题。试一试,让我知道它是否有效:)

标签: ios objective-c swift storyboard unwind-segue


【解决方案1】:

您可以快速转到特定的视图控制器而无需转场。如果您有一个情节提要,请在您的视图控制器中调用它。

self.view.window.rootViewController = [self.storyboard instantiateInitialViewController];

或通过情节提要 ID 转到非初始视图控制器

self.view.window.rootViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryboardID"];

如果您的应用中有多个故事板,则应首先获取特定的故事板。

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
self.view.window.rootViewController = [storyboard instantiateInitialViewController];

正如 cmets 所说,如果您有导航控制器容器,只需切换到根视图控制器即可。

[self.navigationController popToRootViewControllerAnimated:YES]

【讨论】:

  • 谢谢,所以如果我实例化一个特定的视图控制器,它不会保留在控制器堆栈上吗?我想在返回主控制器之前弹出所有内容。还是设置窗口的 rootviewcontroller 会释放所有其他控制器?
  • 快速响应是:如果您没有在其中保留循环,所有当前控制器层次结构都将被清除。另外你应该记住,这样的视图控制器将在一个新的状态下被实例化。
猜你喜欢
  • 2013-03-28
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多