我有一个故事板应用程序,说十个场景。
有各种细分,例如PreToFront
,UserToBombs
,BombsToPre
等。
我的问题:假设用户退出应用程序(我的意思是,按下iPad主页按钮)。
当用户再次打开应用时,applicationDidBecomeActive
...
我想,无论如何,去初始场景。
所以无论用户在哪个场景,我都希望它在应用程序打开时转到特定场景。 (事实上,理想情况下是最初的场景。)
怎么可以这样做?
答案 0 :(得分:3)
除了“重置”应用程序上的第一个视图控制器之外没有任何其他细节变为活动状态,以下内容可能会满足您的需求。
-(void)applicationDidBecomeActive:(UIApplication *)application
{
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
UIViewController *firstViewController = [storyboard instantiateInitialViewController];
self.window.rootViewController = firstViewController;
}
如果您的应用是基于UINavigationController,则只需拨打[mainNavigationController popToRootViewControllerAnimated:YES]
中的applicationDidBecomeActive:
。
答案 1 :(得分:1)
此解决方案不使用segues,但我认为如果您为所需的视图控制器提供ID,它可以正常工作:
-(void)applicationDidBecomeActive:(UIApplication *)application {
[self presentViewControllerAnimated:NO];
}
- (void)presentViewControllerAnimated:(BOOL)animated {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil];
UINavigationController *destinationViewNavigationController = [storyboard instantiateViewControllerWithIdentifier:@"destination"];
[self presentViewController:destinationViewNavigationController animated:animated completion:nil];
}
答案 2 :(得分:1)
如果你需要比 alivingston 更复杂的逻辑,你可以使用展开赛段。
1)在想要关闭的视图控制器中实现此方法:
- (IBAction)unwind:(UIStoryboardSegue *)unwindSegue
2)对于上面的视图控制器,在视图构建器中创建命名展开这个视图控制器和此方法。
3)在applicationDidBecomeActive
获取顶视图控制器。像这样(但请记住,你应该递归地获得呈现的视图控制器):
UIViewController* topController = self.window.rootViewController;
if (topController.presentedViewController) topController = topController.presentedViewController;
4)使用特定标识符
在 topController 上调用- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
快乐的编码!