joh*_*nyu 2 objective-c unity-game-engine ios
我正在寻找解决我问题的方法很长时间,但是在我的案例中大多数都没用,因为几乎所有这些都是关于在IB中完成的错误,我在这个项目中没有使用.要点:
我有一个用Unity生成的XCode项目,我想在UnityViewController的顶部添加另一个带有UIWebView的视图控制器.由于Unity生成的项目不使用UINavigationController,我无法使用pushViewController并决定使用presentViewController:...而是.问题是,当我尝试这样做时,我只看到一个黑屏.如果我调用dismissViewController,我再次看到UnityViewController,这样就可以了.问题是,就像presentViewController没有添加我的vc的视图.我使用断点来查看是否正在调用viewDidLoad而不是.同样适用于 - (void)loadView和 - (UIView*)视图.这是我用来添加我的vc的代码:
WebViewController *webViewController = [[WebViewController alloc] init];
[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:webViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
我检查了webViewController是否为零而不是.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;
Run Code Online (Sandbox Code Playgroud)
后来用另一种方法:
[_mainDisplay->window addSubview: _mainDisplay->view];
_mainDisplay->window.rootViewController = _viewController;
[_mainDisplay->window bringSubviewToFront: _mainDisplay->view];
Run Code Online (Sandbox Code Playgroud)
黑屏可能是由于缺少UINavigationController造成的吗?
这可能与我的问题无关,但我也有一个菜单,我需要在我的应用程序中始终可见,并将其设为keyWindow的子视图.
PS我也尝试使用webvController设置为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];
}
Run Code Online (Sandbox Code Playgroud)
断点位于我更改backgroundColor的行.它没有被调用.
Edit2:使用断点我发现没有调用我的WebViewController子类的方法,甚至不是init.这就像xcode忽略了那个类的存在.我只编辑了viewDidLoad方法,其余的是默认的UIViewController子类模板.WebViewController.h也没有变化.
Edit3:现在修复它.将WebViewController类名更改为其他类名称有所帮助.我能想到的唯一合乎逻辑的解释是WebViewController之前已经在其中一个源文件中实现过,但我自己并没有这样做.可能在其中一个库中(?).无论如何,感谢您的帮助,我接受了GuillaumeA的回答,因为感谢他的建议,我发现它实际上并不是视图的问题.
使用您提供的信息很难知道问题的来源.
这可能只是一种正常行为.在创建UIViewController(我假设您WebViewController是子类)的新实例时,它会UIView为它创建一个空白根.
"空白"是指视图没有子视图,但也没有背景颜色(nil).这使得视图显示为黑色,并且 - 由于某种原因 - 在显示时阻止视图动画.
要测试我的假设是否正确,请尝试更改WebViewController视图的背景颜色:
WebViewController *webViewController = [[WebViewController alloc] init];
webViewController.view.backgroundColor = [UIColor redColor];
[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:webViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
注意:presentModalViewController:animated:现在在iOS 6.0中已弃用,因此您可能希望将其替换为presentViewController:animated:completion::
[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentViewController:webViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8858 次 |
| 最近记录: |