1

我对IOS真的很陌生,所以如果这个问题措辞不明确,我深表歉意。我试过四处寻找,但我没有找到我要找的东西。

基本上在我的 AppDelegate applicationDidBecomeActive 方法中,我正在调用我的网络服务以确保用户仍然是有效用户,并拉下一些刷新的数据,或者如果它们不再有效则将它们踢回登录页面。

我遇到问题的部分是第二部分。当发现用户无效时,如何加载和显示特定的 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];
4

1 回答 1

0

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

于 2012-08-14T23:13:49.530 回答