【问题标题】:How to go back to the first screen of iPhone App on Log Out?如何在注销时返回 iPhone App 的第一个屏幕?
【发布时间】:2015-02-18 09:07:42
【问题描述】:

我有一个应用程序,其结构在附件中定义。

基本上,我有一个登录视图控制器作为根视图控制器。当用户登录时,应用程序会转到TabbarController,然后从那里转到主视图控制器。还有另外三个选项卡。现在有一个 Log Out 按钮,点击哪个用户应该转到登录视图控制器,但是如果我编写代码弹出到根视图控制器,他们将转到任何选项卡的根视图控制器,但不是在登录屏幕上。

如何 POP 到登录视图控制器?

我不想创建 SignInViewController 的新对象,所以 Push 对我不起作用,而且会消耗大量内存。

我在 Xcode 6.1 中使用 Swift

【问题讨论】:

  • 您可以使用展开转场。检查这个:stackoverflow.com/questions/12561735/…
  • 你可以使用'[self.navigationController popToRootViewControllerAnimated:True]'
  • @Ashok 请参阅我在问题中提到的这一行。-------“如果我编写代码弹出到根视图控制器,他将转到任何根视图控制器选项卡,但不在登录屏幕上。-----"
  • 您在哪个视图控制器中嵌入了导航控制器。
  • @SurgePedroza 是的,我找到了解决方案。我创建了一个 Navigation Controller 的全局对象,并将其分配给 SignInViewController 中的 Navigation Controller 对象。然后我调用了 pushToViewController: 并传递了那个全局对象。如果您仍有任何疑问,请告诉我! :-)

标签: swift ios8 heap-memory xcode6.1


【解决方案1】:

您必须将 SignInViewController 设为根视图控制器。

  1. 删除登录凭据。
  2. 并将 SignInViewController 作为 rootviewcontroller 加载。

注意:在我的场景中,工作流程在 ARC 模式下效果最佳。因为在 ARC 模式下,我们不必释放所有已加载到内存中的视图控制器。

【讨论】:

    【解决方案2】:

    这是我用动画改变 rootviewcontroller 的实现。此方法定义在 AppDelegate 类中。不要忘记将 storyboardid 分配给您想要的 ViewController。

     - (void)changeRootViewControllerWithID:(NSString *)storyboardId
        {
            UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    
            UINavigationController * newRootViewController = (UINavigationController *)[storyboard instantiateViewControllerWithIdentifier:storyboardId];
    
            [newRootViewController view];
    
            [UIView transitionFromView:self.window.rootViewController.view
                                                    toView:newRootViewController.view
                                                duration:0.65f
                                                 options:UIViewAnimationOptionTransitionFlipFromRight
                                            completion:^(BOOL finished){
                            self.window.rootViewController = newRootViewController;
                                            }];
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多