我一直在寻找我的问题的解决方案,但其中大多数在我的情况下都没用,因为几乎所有这些都是关于在 IB 中犯的错误,我在这个项目中没有使用。重点:
我有一个使用 Unity 生成的 XCode 项目,我想在 UnityViewController 之上添加另一个带有 UIWebView 的视图控制器。由于 Unity 生成的项目不使用 UINavigationController,因此我无法使用 pushViewController 并决定使用 presentViewController:... 代替。问题是,当我尝试这样做时,我只看到黑屏。如果我打电话给dismissViewController,我会再次看到UnityViewController,所以效果很好。问题是,就像 presentViewController 没有添加我的 vc 视图。我使用断点来查看是否正在调用 viewDidLoad 而不是。-(void)loadView 和 -(UIView *)view 也是如此。这是我用来添加我的 vc 的代码:
WebViewController *webViewController = [[WebViewController alloc] init];
[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:webViewController animated:YES];
我检查了 webViewController 是否为 nil 而不是。rootViewController 就是 UnityViewController,我 100% 确定。
这是创建视图层次结构的 Unity 生成的代码:
_mainDisplay = [[DisplayManager Instance] mainDisplay];
[_mainDisplay->window makeKeyAndVisible];
static bool _ClassInited = false;
if(!_ClassInited)
{
AddOrientationSupportDefaultImpl([UnityViewController class]);
_ClassInited = true;
}
_viewController = [[UnityViewController alloc] init];
_viewController.wantsFullScreenLayout = TRUE;
_viewController.view = _mainDisplay->view;
后来用另一种方法:
[_mainDisplay->window addSubview: _mainDisplay->view];
_mainDisplay->window.rootViewController = _viewController;
[_mainDisplay->window bringSubviewToFront: _mainDisplay->view];
黑屏会不会是缺少UINavigationController造成的?
这可能与我的问题无关,但我也有一个菜单,我需要在我的应用程序中一直可见,我将它设置为 keyWindow 的子视图。
PS我还尝试展示一个将webViewController设置为rootvc的UINavigation控制器,但我得到的只是一个带有导航栏的黑屏。
PSS 我在我的 Unity 项目中使用 Vuforia,因此我无法在模拟器中运行它。
编辑:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor whiteColor];
UIImageView *icon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Icon.png"]];
icon.frame = CGRectMake(50, 50, 200, 200);
[self.view addSubview:icon];
}
断点在我更改背景颜色的那一行。它没有被调用。
Edit2:通过断点,我发现没有调用我的 WebViewController 子类的方法,甚至没有调用 init。就像 xcode 忽略了该类的存在。我只编辑了 viewDidLoad 方法,其余的和默认的 UIViewController 子类模板一样。WebViewController.h 也没有变化。
Edit3:现在修复它。将 WebViewController 类名称更改为不同的名称会有所帮助。我能想到的唯一合乎逻辑的解释是,WebViewController 之前已经在其中一个源文件中实现过,但我自己并没有这样做。可能在其中一个库中(?)。无论如何,感谢您的帮助,我接受了 GuillaumeA 的回答,因为感谢他的建议,我发现这实际上不是视图的问题。