UISplitViewController不会呈现模态视图控制器

时间:2012-03-20 19:01:44

标签: iphone ipad uisplitviewcontroller modalviewcontroller

在显示拆分视图控制器之前,我需要提供一个模态视图控制器。我需要这个,因为用户必须登录。

我已经阅读了这个论坛上的答案,建议模态视图控制器应该从AppDelegate中呈现,但在尝试这样做时,没有任何反应。

我在我的界面的其余部分所在的故事板中设置了我的视图控制器,并且我已经为视图控制器提供了标识符loginViewController。我试图在AppDelegate中显示视图控制器,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        UISplitViewController *splitViewController = (UISplitViewController *) self.window.rootViewController;
        UINavigationController *navigationController = splitViewController.viewControllers.lastObject;
        splitViewController.delegate = (id) navigationController.topViewController;

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
        LoginViewController *lvc = (LoginViewController *) [storyboard instantiateViewControllerWithIdentifier:@"loginViewController"];
        lvc.modalPresentationStyle = UIModalPresentationFullScreen;
        [splitViewController presentModalViewController:lvc animated:YES];
    }

    [_window makeKeyAndVisible];

    return YES;
}

当我这样做时,没有任何反应。没有错误,没有模态视图控制器,没有任何东西。该应用程序只显示我的拆分视图控制器。

在显示拆分视图控制器之前,有人能告诉我如何显示模态视图控制器吗?

2 个答案:

答案 0 :(得分:6)

除非视图完全加载,否则viewcontroller将不允许在另一个视图控制器上推送/显示。

简单地说我们不允许在viewcontroller viewDidLoad / viewWillAppear中调用presentModalViewController / pushViewController。我们需要在viewDidAppear中调用它。

我说你遇到了同样的问题。

我可以说是一些解决方案,

在[self.window makeKeyAndVisible]之后加载LoginViewController;并且在performSelctor中(可能有延迟)。 移动代码以在SplitView的DetailView控制器viewDidAppear中显示LoginViewController。

感谢,

Naveen Shan

答案 1 :(得分:1)

而不是在AppDelegate.m中执行,而是在DetailViewController中执行此操作:

LogInViewController *logInVC = [[LogInViewController alloc] init];
[self presentModalViewController:logInVC animated:NO];

这适合我。