我正在寻找相当长的我的问题的解决方案,但大多是在我的情况也没用,因为几乎所有的人都约在IB做了错误,这我不会在这个项目中使用。给点意见:presentViewController使得黑屏
我有团结产生XCode项目,我想有一个UIWebView它添加一个视图控制器上的UnityViewController的顶部。由于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];
我检查,如果webViewController是零,它不是。该rootViewController是UnityViewController,我100%确定它。
这是创建视图层次结构的统一生成的代码:
_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的子视图。
P.S.我也尝试提供一个UITavigation控制器,并将webViewController设置为rootvc,但我得到的只是一个带有导航栏的黑屏。
P.S.S.我在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];
}
断点上,我更改的backgroundColor行。它没有被调用。
编辑2: 随着断点,我发现没有我的WebViewController子类的方法被调用,甚至没有初始化。这就像xcode忽略了该类的存在。我只编辑了viewDidLoad方法,其余部分与默认的UIViewController子类模板一样。没有更改WebViewController.h。
EDIT3:现在 固定它。将WebViewController类名称更改为另一个帮助。我能想到的唯一合乎逻辑的解释是WebViewController之前已经在其中一个源文件中实现过,但我自己并没有这样做。可能在其中一个图书馆可能(?)。 无论如何,感谢您的帮助,我接受GuillaumeA的答案,因为他的建议,我发现它实际上并不是一个问题。
我试了presentViewController和presentModalViewController,但结果是一样的。 但是,谢谢,改变presentViewController之前的工作背景,我看到一个红色的屏幕,而不是黑色。 – johnyu
'presentModalViewController'和'presentViewController'做同样的事情是正常的行为,但前者已被弃用,所以你应该使用后者。是的红色屏幕:)!如果您觉得您的问题得到解决,您能接受我的答案吗? –
它仍然没有解决我的问题,因为viewDidLoad仍然没有被调用。 – johnyu