iOS Storyboard切换到AppDelegate上没有segue的视图

时间:2012-09-21 16:33:00

标签: ios uiviewcontroller storyboard presentmodalviewcontroller

我有一次性协议视图,只会在用户第一次启动应用时显示。

我使用storyboard IOS 5.1,我的rootview是一个navigationviewcontroller。我的协议视图与导航控制器无关我只想提出弹出模态视图然后关闭视图: enter image description here

我使用以下代码,但它没有做任何应用程序只是继续并启动navigationviewcontroller我放置标志,是应用程序进入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;

}

如何切换与故事板无连接的视图控制器并将其关闭?

1 个答案:

答案 0 :(得分: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中。

希望这会指出你正确的方向。