IOS 5从AppDelegate打开一个特定的ViewController

时间:2012-08-14 22:57:07

标签: ios ios5 appdelegate

我是IOS的新手,所以如果这些问题措辞不清楚,我会道歉。我试过四处寻找,但我找不到我想要的东西。

基本上在我的AppDelegate applicationDidBecomeActive方法中,我正在调用我的webservice来确保用户仍然是一个有效的用户,并提取一些refrehsed数据,或者如果他们不是,则将他们踢回登录页面更长的有效期。

我遇到麻烦的部分是第二部分。当发现用户无效时,如何加载和显示特定的ViewController(在本例中为loginViewController)?我想让正常的viewController流程在它们有效时发生,这样做很好,但我无法弄清楚如何在需要时从AppDelegate启动特定的viewController。

有什么想法吗?

我想我明白了!我在AppDelegate中使用了这段代码来显示我需要的ViewController。

UIViewController *loginController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    UINavigationController *loginNavController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"LoginNavController"];
    UIViewController *currentVC = self.window.rootViewController;
    _window.rootViewController = loginNavController;
    [currentVC presentViewController:loginNavController animated:NO completion:nil];

1 个答案:

答案 0 :(得分:0)

为简单起见,假设您有一个视图应用程序(不是导航控制器,而不是标签栏控制器 - 解决方案可以扩展,但更容易解释)。当您收到应用程序启动的appDelegate消息时,请将UIImageView设置为根视图并显示您的启动映像(用户认为您仍在启动)。尝试登录,并在其他对象(不是视图控制器)中执行此操作。如果成功,则将所需视图设为rootView,用户可以看到它。如果登录失败,那么您将登录窗口设为rootView。这里的关键是有一个驱动它的对象,可以与appDelegate交互。您还可以将此功能添加到appDelegate本身。