iOS呈现视图控制器出现黑屏

8

我正在尝试使用StoryBoards展示我创建的ViewController:

 AuthViewController *authViewController = [[AuthViewController alloc] init];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:authViewController];
    UIViewController *vc  = [[[[UIApplication sharedApplication] windows] firstObject] rootViewController];
    [vc presentViewController:nav animated:YES completion:nil];

但是屏幕显示黑屏,可能是什么问题?
4个回答

13

初始化AuthViewController并不意味着会为控制器创建视图布局。

在这里,视图控制器没有加载它的视图,这就是为什么你会得到黑屏的原因。使用故事板对象和视图控制器的标识符来加载其视图。

AuthViewController控制器的Storyboard中指定Storyboard标识符。

像下面这张图片一样添加Storyboard ID并将Use Storyboard ID选项标记为true

enter image description here

现在可以使用以下代码获取AuthViewController控制器对象:

AuthViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"AuthViewController"];

4
您可以参考下面的故事板片段:

关于故事板,您可以参考以下片段:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
AuthViewController *authViewController = [storyboard instantiateViewControllerWithIdentifier:@"**YOUR_STORYBOARD_ID**"];
[authViewController setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:authViewController animated:YES completion:nil];

2

AuthViewControllerViewController是否在Storyboard中呈现?如果是,则应传递一个Storyboard ID,并以此方式初始化AuthViewController

AuthViewController *authViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"_STORYBOARD_ID_"];

我希望这可以帮到您。
注:保留HTML标签。

0
我的问题是,例如在故事板中的AuthViewController类是一个简单的UIViewController,在我的Swift类中它是一个UITabBarController。这就是为什么它没有渲染任何内容的原因。
这是一个愚蠢的错误,但我希望我能为某人节省一些时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接