从任何视图控制器“放松”回故事板的初始视图控制器

时间:2016-08-26 22:20:58

标签: swift storyboard

前提条件(斯威夫特):

  1. 我在一个故事板上有一个包含许多视图控制器的应用程序。
  2. 有一个导航控制器,但前几个视图控制器不在其中。 (我指出这个b / c我不能在这里“弹出根”。)
  3. 在x分钟后触发“会话过期”事件。
  4. 用例:

    无论用户在哪个屏幕上,如果我看到“会话已过期”通知,我想将用户发送回我的故事板的初始视图控制器。

    我的问题:

    如果不在每个视图控制器上手动创建展开segue,我怎样才能实现这一目标?有没有办法“扔掉”故事板的当前实例并从头开始?

    (我并不担心会记住他们目前的状态,而不是......这对于这种情况并不重要。它过期了,输了,他们重新开始。)

2 个答案:

答案 0 :(得分:2)

最好的解决方案是使用storyboard id导航到viewcontroller。

单击 main.storyboard 并单击viewcontroller。在身份检查器上启用故事板使用故事板ID 并为其提供ID。

let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : UINavigationController = storyboard.instantiateViewControllerWithIdentifier("mainNavigationStoryBoard") as! UINavigationController
self.presentViewController(vc, animated: true, completion: nil)

在sesssion过期后,只需使用上面的代码导航到特定的viewcontroller

答案 1 :(得分:2)

你可以"抓住"相关的viewController来自其故事板标识符 - 正如Pawan Araballi在他的回答中所说 - 并在window.rootViewController上设置了AppDelegate属性。 我认为这种方法比在您已经拥有的UI之上呈现viewController更好。