【问题标题】:segue .. from anywhere to the first scene (after applicationDidBecomeActive)segue .. 从任何地方到第一个场景(在 applicationDidBecomeActive 之后)
【发布时间】:2014-07-10 12:51:00
【问题描述】:

我有一个包含十个场景的故事板应用程序。

还有PreToFrontUserToBombsBombsToPre等各种各样的segue。

我的问题:假设用户退出应用程序(我的意思是,按下 iPad 主页按钮)。

当用户再次打开应用时,applicationDidBecomeActive ...

无论如何,我都想去最初的场景。

因此,无论用户在哪个场景中,我都希望它在应用打开时切换到特定场景。 (实际上,理想情况下是初始场景。)

如何做到这一点?

【问题讨论】:

  • 你的初始视图控制器是UINavigationController吗?
  • 感谢所有这些很棒的答案,我会调查的!!
  • @JoeBlow - 我需要你的帮助。我可以给你发电子邮件吗?
  • 是的,当然!!!!不过,您可能会将其发送到错误的地方:)

标签: ios uistoryboard uistoryboardsegue


【解决方案1】:

除了“重置”到应用程序上的第一个视图控制器之外没有任何其他细节确实变得活跃,以下可能会满足您的需要。

-(void)applicationDidBecomeActive:(UIApplication *)application
{
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;
    UIViewController *firstViewController = [storyboard instantiateInitialViewController];
    self.window.rootViewController = firstViewController;  
} 

如果您的应用基于 UINavigationController,您可以在 applicationDidBecomeActive: 中调用 [mainNavigationController popToRootViewControllerAnimated:YES]

【讨论】:

    【解决方案2】:

    此解决方案不使用 segue,但我认为如果您将 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];     
    }
    

    【讨论】:

      【解决方案3】:

      如果您需要比上述 alivingston 更复杂的逻辑,您可以使用 Unwind Segues

      1) 在你想往下的视图控制器中实现这个方法:

      - (IBAction)unwind:(UIStoryboardSegue *)unwindSegue
      

      2) 为上述视图控制器创建 named 展开到此 视图控制器Interface Builder 中的此方法。

      3) 在applicationDidBecomeActive 中获取顶视图控制器。像这样(但请记住,您应该递归获取呈现的视图控制器):

      UIViewController* topController = self.window.rootViewController;
      if (topController.presentedViewController) topController = topController.presentedViewController; 
      

      4) 使用特定标识符在 topController 上调用 - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

      编码愉快!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        相关资源
        最近更新 更多