这是iOS 7的Xcode 5中的错误吗?

时间:2014-02-02 22:53:07

标签: ios uiviewcontroller uistoryboard

  1. 创建新的单一视图项目(例如,'测试')
  2. 在主故事板中,创建两个带有标题OneTwo的视图控制器 - 使One成为初始视图控制器
  3. 将标签One放置在视图控制器One的内容中,并在Two
  4. 中标记Two
  5. viewDidLoad的{​​{1}}中包含以下内容:

    TestViewController.m
  6. 保存,构建和运行。

  7. 我一直收到// instantiate the new view controller UIStoryboard *storyboard = self.storyboard; TestViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Two"]; // Change the view viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentViewController:viewController animated:YES completion:nil]; 种类的错误。使用断点,我发现问题出在实例化步骤。然而,上述代码直接取自Apple的View Controller Programming Guide。

    我已经梳理了这个网站,发现许多人在以编程方式实例化视图控制器时遇到了问题。任何明确的解决方案?

1 个答案:

答案 0 :(得分:0)

这里没有错误 - 你只是编写不合适的代码。如果你把它放在一个动作中并用一个按钮,一个计时器触发它,你给出的代码片段就可以了。但是你试图以模态方式呈现另一个视图控制器,然后运行代码的视图控制器才能显示自己的视图。

从storyboard或.xib文件加载视图控制器的视图时,将调用

-viewDidLoad;这是一个机会,可以进行任何必须延迟的初始化,直到视图层次结构出现。但是,该视图实际上并未显示在该点上。您需要等到收到-viewDidAppear消息才能知道该视图在屏幕上。因此,您可以想象,在当前的一个其他视图控制器已经确定之前尝试呈现它们并没有多大意义。

  

我一直得到错误的故事板不包含视图控制器'两个'变种。

在这种情况下,您尚未将故事板标识符正确分配给视图控制器。在故事板编辑器中选择视图控制器“Two”,然后查看身份检查器。您需要设置如下标识符:

identity inspector

  

我梳理了这个网站,发现很多人都遇到了问题   以编程方式实例化视图控制器。任何明确的解决方案?

您是否也看过他们问题的答案?这就是这个网站的工作方式 - 我们不仅回答那些问他们的人的问题,而且回答未来可能有类似问题的人。 Identifying a UIStoryboard是一个类似于你的问题的一个很好的例子,答案可能对你有帮助。