iOS Present Viewcontroller 出现黑屏

Posted

技术标签:

【中文标题】iOS Present Viewcontroller 出现黑屏【英文标题】:iOS Present Viewcontroller getting black screen 【发布时间】:2015-01-19 10:16:17 【问题描述】:

我正在尝试展示我用 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];

但是黑屏。可能是什么问题?

【问题讨论】:

【参考方案1】:

Alloc init AuthViewController 并不意味着会为控制器创建视图布局。

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

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

Use Storyboard ID 选项添加Storyboard ID 并标记true,如下图所示:

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

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

【讨论】:

【参考方案2】:

情节提要可以参考下面的sn-p:

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

【讨论】:

【参考方案3】:

AuthViewController 的 ViewController 是否存在于 Storyboard 中?如果是,那么您应该将Storyboard ID 传递给它,并以这种方式启动您的AuthViewController

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

我希望这会有所帮助。

【讨论】:

【参考方案4】:

我的问题是这个类,例如故事板中的 AuthViewController 是一个简单的 UIViewController,而在我的 swift 类中它是一个 UITabBarController。这就是它没有渲染任何东西的原因。

愚蠢的错误,但我希望我可以为某人节省一些时间。

【讨论】:

以上是关于iOS Present Viewcontroller 出现黑屏的主要内容,如果未能解决你的问题,请参考以下文章

ios学习:页面跳转(present)

ios ViewController present不同的方向

iOS Present Viewcontroller 出现黑屏

Swift/iOS13 - UIApplication.shared.delegate.window?.rootViewController?.present() 来自自定义类

React Native Push 而不是 Present 本机 iOS 视图

iOS Dismiss 和 Present 视图控制器自定义动画