我如何 return 到故事板上的第一个视图控制器?

How do I return to the first view controller on a storyboard?

场景如下:

我故事板中的第一个场景是登录视图。这是一个 UIViewController。当用户登录时,它会显示嵌入在导航控制器中的主页视图。我正在添加一个注销功能,它应该将我带回到情节提要中的第一个场景,即登录视图。我该怎么做?

这是显示登录视图 -> 导航控制器 -> 主视图的故事板图像

这是我到目前为止的实现。在注销操作中,我清除了会话,并弹出到根视图控制器。它不起作用,因为我仍然停留在主视图上,因为它是导航控制器的根视图控制器。但是,如果我重新启动应用程序,用户将注销,我只剩下登录视图。

代码:

    [self.navigationController popToRootViewControllerAnimated:NO];

    // Set at beginning of storyboard
    UIStoryboard *mystoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    app.loginViewController = [mystoryboard instantiateViewControllerWithIdentifier:@"loginViewController"];

你可以通过使用 navigationController.viewControllers.Get navigationController 中的所有 View Controller 来弹出,识别它然后 pop.If 你已经将 segue 从 LoginView 推送到 HomeView

if([self.navigationController.viewControllers[0] isKindOfClass:[LoginViewController class]]) 
    {
      [self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:YES];
    }

希望对你有所帮助...

试试这个答案。首先创建一个导航控制器。使其 "is initial View Controller"。之后连接登录 Viewcontroller 作为根视图控制器并将家庭控制器与 facebook 按钮操作连接。

导航控制器 -> 登录控制器 -> 家庭控制器

你的 Storyboard 是这样的

之后当你退出 HomeViewController 然后添加这个方法:

  -(IBAction)logOut_Action:(id)sender
  {
    [self.navigationController popViewControllerAnimated:YES];
  }

它工作正常。请像这样实施,如果您遇到任何问题,请告诉我。 :)

为此使用 unwind segues。

在您的 LoginViewController 中,声明一个具有此签名的方法

- (IBAction)unwindToLoginViewController:(UIStoryboardSegue*)segue

转到您的 HomeViewController 并控制从注销按钮拖动到视图控制器顶部的退出按钮 window(请参见下面的屏幕截图),然后 select unwindToLoginViewController继续。就是这样!

试试这个:

[self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];