gpt4 book ai didi

ios - 关闭模态视图 Controller 会导致黑屏

转载 作者:可可西里 更新时间:2023-11-01 03:08:56 28 4
gpt4 key购买 nike

这是我的 View ( Controller )层次结构:

  • UITabBarController(作为应用的 rootViewController)
  • UINavigationController(作为 tabBar 选项卡之一的 viewController)
  • UIViewController(作为 UINavigationControllerrootViewController)
  • UICollectionView(作为 subview )
  • MyViewController.view(作为 UICollectionView 的部分标题 View )

因此,我需要从 MyViewController 中呈现一个模态视图 Controller 。我试过用

[self presentViewController:modalVC animated:YES completion:nil];

虽然它有效,但 Xcode 警告我“不鼓励在分离的 View Controller 上呈现 View Controller ”,这是正确的,因为 modalVC 只填充 Collection View 标题的 View ,这不是我的全屏之后。

我尝试过的所有其他选项:

UITabBarController *tb = (UITabBarController *)self.view.window.rootViewController;
[tb presentViewController:modalVC animated:YES completion:nil];

or...

UINavigationController *nc = (UINavigationController *)tb.selectedViewController;
[tb presentViewController:modalVC animated:YES completion:nil];

or...

UICustomViewController *cv = (UICustomViewController *)nc.topViewController;
[vc presentViewController:modalVC animated:YES completion:nil];

根据需要呈现 modalVC 全屏,但是,当我通过调用关闭 modalVC 时

[self dismissViewControllerAnimated:YES completion:nil];

从 modalVC 本身来看,modalVC 确实自行解雇了,但我留下了一个黑屏。一点点调试显示,在关闭 modalVC 后,self.view.window.rootViewController 变为 nil

知道为什么会发生这种情况以及如何解决这个问题吗?

编辑

这是一个 iPhone 应用程序。黑屏发生在 iOS7 和 iOS8 上。另外,下面是我启动 MyViewController

的方法
#pragma mark - UICollectionViewDelegate methods

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section {

self.myViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];

return self.myViewController.view.frame.size;
}

最佳答案

我找到了解决方案 - this answer真的有帮助。诀窍在于关闭 View Controller 。应该这样做:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

不是这样的:

[self dismissViewControllerAnimated:YES completion:nil];

虽然链接答案的作者建议更好的方法是使用委托(delegate)(presentED VC 将定义一个协议(protocol)并且 presentING VC 将订阅它,然后在 presentED VC 提出要求时解雇它),但它不是对我来说不可行。

关于ios - 关闭模态视图 Controller 会导致黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641991/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com