【问题标题】:Different flow in storyboard故事板中的不同流程
【发布时间】:2014-10-15 16:48:25
【问题描述】:

我有一个关于 iOS Storyboard 的问题。 在我的故事板中,我有我的流程:

  1. 导航控制器;
  2. 登录视图控制器;
  3. 详细视图控制器;

如果没有有效的用户会话,这是常规流程。 当我启动应用程序时,我需要检查是否存在有效的用户会话。在这种情况下,我需要直接可视化 3°(详细视图控制器) 我不确定,但我认为我需要在我的 Appdetegate 中检查用户会话。在这种情况下,如何直接加载 3° 视图控制器?

【问题讨论】:

  • 要直接切换到AppDelegate中的DetailViewController?
  • 是的,有更好的想法吗?
  • 您可以将详细控制器设为导航控制器的根,并从详细控制器到登录控制器进行模态segue。然后,一旦应用程序启动,在详细控制器中,在 ViewDidAppear 中,您可以进行检查并立即以模态方式转到登录视图。这还可以让您在用户登录后轻松返回详细视图

标签: ios objective-c uiviewcontroller storyboard appdelegate


【解决方案1】:

解决方案 1

我认为您可以做的就是根本不检查有效会话。这是我的想法

1) 创建一个名为 isUserSignedIn 的 BOOL,最初设置为 NO,并将其保存在 NSUserDefaults 中。 (AppDelegatedidFinishLaunchingWithOptions方法)

2) 一旦用户进行有效登录,将BOOL 设置为YES。将BOOL 保存到NSUserdefaults

3) 当用户注销时,将BOOL 设置为NO

4) 每次用户打开应用程序时。在AppDelegatedidFinishLaunchingWithOptions 中检查BOOL 是或否。如果没有加载 LoginViewController。如果是,什么也不做。

我就是这样做的。始终将每个 BOOL 更改保存在 NSUserdefaults 中并从那里加载。

解决方案 2 但是,如果您想在 AppDelegate 中加载 DetailViewController,请使用以下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    //check your login session here…

    //if session ok loads DetailViewController
    DetailViewController* detail = [[DetailViewController alloc] init];
    [self.window.rootViewController presentViewController:detail
                                                 animated:NO
                                               completion:nil];
    //if not 
    // do something..


    return YES;
}

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多