【问题标题】:Going back to initial storyboard ViewController on logout注销时返回初始情节提要 ViewController
【发布时间】:2012-10-12 12:54:47
【问题描述】:

我在我的 iOS 中使用故事板。第一个屏幕是登录屏幕。当用户注销或被注销时,他可能在更深层次的屏幕上。

例如:登录视图控制器 => 模态视图控制器 => 标签栏控制器 => 导航控制器 => 视图控制器 => 视图控制器。我想从最顶层的视图控制器一直回到最底层的视图控制器。

编辑:这是视图层次结构图:

谢谢!

【问题讨论】:

    标签: iphone ios uistoryboard uistoryboardsegue


    【解决方案1】:

    就我而言,我直接设置 windowrootViewController,如下所示:

    func popToInitialScreen() {
        let window = UIApplication.shared.keyWindow
        window.rootViewController = nil
        window.rootViewController = // init your initial view controller
        window.makeKeyAndVisible()
    }
    

    P.S keyWindow 在 iOS 13 中已弃用,不应用于支持多个场景的应用程序,因为它会在所有连接的场景中返回一个键窗口。

    【讨论】:

      【解决方案2】:

      我为 UIViewControllers 编写了一个似乎可以正常工作的类别:

      - (void) popToInitialViewController
      {
          UIViewController *vc;
          if (self.navigationController != nil) {
              vc = self.navigationController;
              [self.navigationController popToRootViewControllerAnimated:NO];
              [vc popToInitialViewController];
          }
          else if (self.tabBarController != nil) {
              vc = self.tabBarController;
              [vc popToInitialViewController];
          }
          else if (self.presentingViewController != nil) {
              vc = self;
      
              while (vc.presentingViewController != nil)
                  vc = vc.presentingViewController;
      
              [vc dismissModalViewControllerAnimated:NO];
      
              [vc popToInitialViewController];
          }
      }
      

      欢迎评论:)

      【讨论】:

        【解决方案3】:

        假设所有内容都被推送到导航堆栈上,这应该可以工作:

        [self.navigationController popToRootViewControllerAnimated:YES];
        

        【讨论】:

        • 啊,我明白了,不错的图表。您可能还必须使用 NSNotificationCenter 在注销时发布通知。您的第一个模态视图控制器可以侦听通知并在收到通知时自行关闭。
        猜你喜欢
        • 2012-05-03
        • 2012-04-03
        • 2012-01-16
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        • 2020-06-02
        相关资源
        最近更新 更多