0

我有一个一次性协议视图,仅在用户第一次启动应用程序时才会显示。

我使用故事板 IOS 5.1,我的 rootview 是一个导航视图控制器。我的协议视图与导航控制器无关我只想显示一个 modalview 弹出然后关闭视图: 在此处输入图像描述

我使用以下代码,但它没有做任何事情应用程序只是继续并启动我放置标志的导航视图控制器,是的应用程序进入 if 语句。:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
       if(login==ok){
       UIStoryboard *storyboard = [UIApplication sharedApplication].delegate.window.rootViewController.storyboard;
        UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"AgreementViewController"];
        [self.window.rootViewController presentModalViewController:loginController animated:YES];
        }
return YES;

}

如何切换与情节提要无关的视图控制器并将其关闭?

4

1 回答 1

2

在上周末我一直在开发的应用程序中,我遇到了类似的情况。我想第一次展示一个单独的故事板以进行引导设置。我的代码看起来和你的几乎一样,当我调试它时它给了我一个警告。这是因为我试图展示我的一次性 ViewController 的 rootViewController 在应用程序中此时不可见。

因此,我决定将我的一次性视图控制器设置为 rootViewController,而不是“在”rootViewController 上显示我的一次性视图控制器。在您的情况下,它将类似于:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if(login == ok) {
        UIStoryboard *storyboard = [UIApplication sharedApplication].delegate.window.rootViewController.storyboard;
        UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"AgreementViewController"];
        [self.window setRootViewController:loginController];
    }

    return YES;
}

要关闭它,您可能会从一次性视图控制器添加一个 segue 到您的第一个视图控制器,或者您可以使用与您问题中的代码类似的代码。

另一种方法是在您的第一个“正常”视图的 viewDidAppear 中而不是在 AppDelegate 中进行检查和视图切换。

希望这将为您指明正确的方向。

于 2012-10-01T10:19:04.100 回答