开发者社区 问答 正文

删除另一个UIViewController或QLPreviewController后的空屏幕

我有一个现有的应用程序UIViewController由NIB/XIB发起。

在我接触任何东西之前,XIB文件是在引用一个webview。我删除了它,并在我的UIViewController viewDidLoad方法来创建它的配置和进程池。因此,这个webview现在被添加到我的主目录中。UIViewController他的观点如下:[self.view addSubview:webView];在viewDidLoad方法。

然而,这一变化导致了一个新的问题:UIViewController有时打开一秒UIViewController或QLPreviewController就像这样:

// present second UIViewController
self.secondaryWebViewController = [[SecondaryWebViewController alloc] initWithURL:URL];
[self presentViewController:self.secondaryWebViewController animated:YES completion:nil];

// Present QLPreviewController
[self presentViewController:self.previewController animated:YES completion:^{ }];

当这一秒UIViewController或QLPreviewController是被解雇的,我看不出主要UIViewControllerWebView和以前一样(在我从XIB中删除Webview并以编程方式创建/添加它之前),但是我得到了一个空白屏幕。我错过了什么?我要回到主干道UIViewController当这种情况发生的时候。 我注意到,只有当我解散的控制器是UIModalPresentationFullScreen时,我才有一个黑屏幕。当它是UIModalPresentationPopover时,它不会发生。

展开
收起
游客5akardh5cojhg 2019-12-04 14:34:03 456 分享 版权
阿里云 AI 助理回答

遇到这种情况,可能是因为在dismiss模态视图控制器时,主UIViewController的视图层次结构没有正确地重新调整。以下是一些建议来解决这个问题:

  1. 确保webView的生命周期管理正确:确认webView对象在UIViewController的整个生命周期中都有效。你可以在viewWillAppear:方法中尝试重新添加或刷新webView,以确保它在视图将要显示时是可见的。
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.view addSubview:webView];
    // 如果需要,可以在这里重新配置或刷新webView的内容
}
  1. 检查视图层次和约束:有时候,视图被隐藏可能是由于自动布局约束问题或者视图层级混乱导致的。确保webView有正确的约束(如果使用Auto Layout),并且没有被其他视图遮挡。

  2. 调试视图层次:使用Xcode的Debug View Hierarchy工具来检查在黑屏发生时的视图层次结构。这可以帮助你确定webView是否还在,并且位置、大小是否正确。

  3. Modal Presentation Style:既然你提到只有在全屏模式下才出现问题,考虑调整modal presentation样式,或者在dismiss之前手动调整webView的状态,比如在dismiss回调里强制更新主界面的视图。

[self dismissViewControllerAnimated:YES completion:^{
    [self.view setNeedsLayout];
    [self.view layoutIfNeeded];
}];
  1. 内存管理:确保没有意外释放了webView对象或者其父视图。检查是否有地方错误地调用了removeFromSuperview或者过度释放了相关对象。

  2. Web内容加载:确认web内容是否已经正确加载。有时,WebView可能因为加载失败而显示为空白。你可以通过代理方法监控加载状态并做相应处理。

如果以上建议都不能解决问题,可能需要更详细的代码审查或进一步的调试信息来定位问题所在。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: