【问题标题】: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?

标签: ios objective-c uiviewcontroller


【解决方案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];
}

【讨论】:

  • 真的很抱歉回复晚了。是的,你是对的。我和你一样处理这个问题。但我只想知道原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多