呈现登录UINavigationController显示黑屏

时间:2015-03-29 10:58:00

标签: ios objective-c interface-builder

我的iOS应用程序需要用户身份验证,当用户未经过身份验证时,应用程序应显示一个用户可以登录的ViewController。此屏幕还为用户提供了创建帐户的选项,因此整个登录屏幕(和可选的注册屏幕)都是使用以编程方式显示的UINavigationController设置的。

将显示登录屏幕,其中包含以下代码:

- (void)promptCredentials{
    dispatch_async(dispatch_get_main_queue(), ^{
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UINavigationController *loginScreenNav = [storyboard instantiateViewControllerWithIdentifier:@"LoginNavigationController"];
        [loginScreenNav setModalPresentationStyle:UIModalPresentationFullScreen];
        [self presentModalViewController:loginScreenNav animated:YES];
    });
}

但是,调用此方法时,应用会导航到黑屏enter image description here。以编程方式向用户显示不同ViewController的正确方法是什么?我发现了几个与这种黑屏相关的SO问题,然而,没有一个答案对我有用。我的应用程序在iOS 8.2上运行。

1 个答案:

答案 0 :(得分:1)

您需要创建一个UIViewcontroller并将其设置为UINAvigationController的rootController。

presentModalViewController从ios6开始不推荐使用,请尝试使用presentViewController。

UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginNavigationController"];

UINavigationController  *loginScreenNav = [[UINavigationController alloc] initWithRootViewController:vc];

[self presentViewController:loginScreenNav animated:YES];