前提条件(斯威夫特):
用例:
无论用户在哪个屏幕上,如果我看到“会话已过期”通知,我想将用户发送回我的故事板的初始视图控制器。
我的问题:
如果不在每个视图控制器上手动创建展开segue,我怎样才能实现这一目标?有没有办法“扔掉”故事板的当前实例并从头开始?
(我并不担心会记住他们目前的状态,而不是......这对于这种情况并不重要。它过期了,输了,他们重新开始。)
答案 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更好。