instantiateViewControllerWithIdentifier显示空白视图(xcode 4.5)

时间:2012-10-11 16:01:41

标签: iphone ios storyboard ios6

我听说在XCode 4.5中有一些更改,Storyboard标识符不再被称为标识符,而是Storyboard ID。我试图使用它,但它没有启动任何东西。它总是空白的。我做错了什么?

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

 HistoryViewController* historyVC = [storyboard instantiateViewControllerWithIdentifier:@"histSB"];

使用

  [self presentViewController:historyVC animated:YES completion:nil];

OR

 [self.navigationController pushViewController:historyVC animated:YES];

OR

 [self presentModalViewController:historyVC animated:YES];

查看故事板中设置的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:3)

这是我在我的应用程序中使用了几次的东西,因为segues是不切实际的。从上面提供的代码和屏幕截图开始,这是我如何连接它:

HistoryViewController *historyVC = [self.storyboard instantiateViewControllerWithIdentifier: @"histSB"];
[self.navigationController pushViewController: historyVC animated:YES];

如果您从iPad上的popopver显示视图控制器,这将非常有用。将具有自己的导航控制器的视图添加到故事板:

enter image description here

请注意,导航控制器的左侧没有segue。以下代码在popover中显示:

HistoryViewController *historyVC = [self.storyboard instantiateViewControllerWithIdentifier: @"histSB"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: historyVC];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController: navigationController];

然后,您可以将此作为通过segue将其他视图控制器推送到导航控制器的基础(注意视图控制器右侧的那个):

[self performSegueWithIdentifier: @"WhateverComesNextSegue" sender: self];

希望有所帮助。