【发布时间】:2014-10-29 22:48:58
【问题描述】:
这是我的视图(控制器)层次结构:
-
UITabBarController(作为应用的rootViewController) -
UINavigationController(作为viewController用于tabBar选项卡之一) -
UIViewController(作为UINavigationController的rootViewController) -
UICollectionView(作为子视图) -
MyViewController.view(作为UICollectionView的部分标题视图)
因此,我需要从MyViewController 展示一个模态视图控制器。我试过用
[self presentViewController:modalVC animated:YES completion:nil];
虽然它有效,但 Xcode 警告我“不鼓励在分离的视图控制器上显示视图控制器”,这是正确的,因为 modalVC 只填充集合视图标题的视图,这不是我的全屏之后。
我尝试过的所有其他选项:
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;
}
【问题讨论】:
-
你能展示你的
MyViewController和MyViewController.view的设置吗? -
亚伦,我已经更新了这个问题。这是你要求的吗?我没有在
MyViewController本身做任何额外的设置。
标签: ios objective-c iphone xcode modalviewcontroller