0

我已经搜索了这个论坛并查看了在 iPhone 模拟器上加载屏幕时“黑屏”视图问题的各种解决方案,但我相信我的问题是独一无二的,因此我还没有找到解决方案。

这是正在发生的事情:

  • 当我使用 Interface Builder 使用“push”segue(拖动线,选择“push”)将 ViewA 链接到 ViewB 时,ViewB 正确加载;
  • 当按下 ViewA 上的按钮时执行“推送”。

但是,当我在按下 ViewA 上的按钮时尝试以编程方式加载 ViewB 时,ViewB 显示为黑屏。这是我正在做的事情:

  • 我正在使用最新版本的 XCode;
  • -(void) loadView已被 ViewB 注释掉;
  • 我使用Interface Builder创建了ViewA和ViewB ,并且没有任何一个View的.xib文件,所以我相信当按下按钮时以编程方式分配+初始化ViewB(?)时我不能使用“initWithNibName”参数(?)。
  • 我有一个 NavigationController,ViewA 是“RootView”,ViewA 和 ViewB 都有一个 ViewController。
  • 我用来通过按 ViewA 按钮以编程方式加载 ViewB 的代码如下:

    ViewB *viewB = [[ViewB alloc] init]; [self.navigationController pushViewController:viewB 动画:YES];

有没有人有任何解决方案?(PS——这个社区太棒了!!!)

感谢大家!

4

4 回答 4

0

尝试使用 initWithNibName:@"" 包初始化 ViewController:将该视图的 XIB 文件的名称放在第一个参数的位置,不带扩展名“.xib”,并将包设置为 nil 或 [NSBundle mainBundle]。您可以进一步查看 Apple 文档。

于 2012-06-08T10:22:58.980 回答
0

可能 [self navigationController] 为零,检查一下。

于 2012-06-09T11:34:54.240 回答
0

当你使用故事板时,你应该像这样初始化你的 ViewController

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle bundleForClass:[self class]]];
ViewControllerB *viewController = [storyboard instantiateViewControllerWithIdentifier:@"identifier"];
[self.navigationController viewController animated:YES];

在界面生成器中,您应该将尝试初始化的视图控制器的标识符设置为“标识符”

(MianStoryboard_iPhone 当然是你故事板的名字!)

于 2012-06-08T23:07:04.837 回答
0

可能你的 XIB 搞砸了。您可以尝试删除 viewcontroller.m[h][xib] 并添加一个新的。在此之前,复制并粘贴 m 和 h 文件的内容。添加新的空视图控制器后,刚刚过去的内容。不幸的是,您将不得不再次组装 xib。

于 2013-03-17T13:07:37.877 回答