为啥使用故事板推送视图控制器显示黑屏
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 - 推送下一个视图控制器故事板