为啥使用故事板推送视图控制器显示黑屏

Posted

技术标签:

【中文标题】为啥使用故事板推送视图控制器显示黑屏【英文标题】:why use storyboard push a viewcontroller shows black screen为什么使用故事板推送视图控制器显示黑屏 【发布时间】:2017-05-10 11:32:05 【问题描述】:

我创建了一个 SingleView 应用程序,然后使用“嵌入导航控制器”来获取导航控件。 当 push 一个控制器时,viewcontroller 的 backgroundColor 是黑色的。

我知道使用此代码:

UIStoryboard * storyBoard  =  [UIStoryboard storyboardWithName:@"Main" bundle:nil];//UIStoryboard(name: "Main", bundle:nil)
UIViewController *roomController = [storyBoard instantiateViewControllerWithIdentifier:@"controlerID"];

但是原因是什么? 如果我不想完全使用情节提要,请仅使用此代码

 UIViewController *roomController = [[UIViewController alloc]init];

我能做什么?是只设置viewcontroller的backgroundColor?

【问题讨论】:

你能在场景中显示你的controlerID名字吗 试试这个 UIViewController *roomController = [[UIViewController alloc] initWithNibName: @"NibNa`me" bundle: nil] 仅使用 init 进行分配不会真正实例化您的视图控制器。您必须从 initWithNibName 或使用情节提要标识符获取它 你能告诉你你介绍了 VC 吗? performSegue?Push? UINavigationController shows black screen after pushing a view的可能重复 【参考方案1】:

你需要使用你的UIStoryboard实例的instantiateViewControllerWithIdentifier:方法,然后你才能推送控制器。

【讨论】:

真的很抱歉回复晚了。是的,你也是对的。但是新的 viewController 不是 UIStoryboard 或 xib。我只想知道原因。【参考方案2】:
UIStoryboard *storyboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *roomController = [storyboard instantiateViewControllerWithIdentifier:@"controlerID"];
[self.navigationController pushViewController: roomController animated:YES];

// 如果您制作没有情节提要的控制器,则更改您的视图颜色

UIViewController *roomController = [[UIViewController alloc]init];
[self.navigationController pushViewController: roomController animated:YES];

- (void)viewDidLoad 

  self.view.backgroundColor =[UIColor whiteColor];

【讨论】:

真的很抱歉回复晚了。是的,你是对的。我和你一样处理这个问题。但我只想知道原因。

以上是关于为啥使用故事板推送视图控制器显示黑屏的主要内容,如果未能解决你的问题,请参考以下文章

使用 splitViewController 在 iPad 故事板上出现黑屏

故事板 - 弹出到视图控制器然后推送导致多次推送

SWRevealViewController - 推送下一个视图控制器故事板

故事板无需单击按钮即可应用推送(模态,推送,自定义)

需要帮助在故事板上的 UIScrollView / UIPageControl 中推送视图

从 didReceiveRemoteNotification 加载故事板视图控制器