我已经实现了一个视图控制器,它提供了类似于UINavigationController的导航结构。它使用视图控制器包含。所有视图控制器都作为子项添加。
当我在此导航流程中从视图控制器呈现模态视图控制器时,基础视图在自定义过渡期间消失,用户将继续查看下面的窗口视图。
[UIView animateWithDuration:0.35 animations:^{
self.view.transform = CGAffineTransformMakeScale(0.4, 0.4);
self.view.alpha = 0.0;
} completion:^(BOOL finished) {
[[self presentingViewController] dismissViewControllerAnimated:NO completion:nil];
}];
这是一次非常刺耳的经历。以前,此动画会缩小模态视图控制器的视图,并将其淡入到下方的呈现视图控制器视图中。正如我之前所说,现在用户暴露在窗口的视图中(当前没有设置颜色值)。
参考View Controller文档,我觉得我已经设置了所有正确的字段,但是,有些东西是不正确的。
视图控制器在需要时显示另一个视图控制器 查看控制器以执行任务。呈现视图控制器是 负责这种行为。它配置显示的视图 控制器,从它接收信息,并最终解散它。 然而,在呈现时,呈现的视图控制器 视图暂时添加到窗口的视图层次结构中。
我的呈现视图控制器是我的自定义导航控制器,呈现的视图控制器是一个模态视图控制器,允许用户撰写对话。我的应用程序的窗口根视图控制器已正确配置到我的自定义导航控制器。
我还阅读了一些关于演示文稿上下文的内容,并将自定义导航控制器配置为将definePresentationContext配置为YES。
当呈现视图控制器时,屏幕的那部分就是它 封面由另一个提供给它的演示文稿上下文定义 查看控制器。提供演示文稿的视图控制器 上下文不需要与呈现它的视图控制器相同。 图1-15显示了显示的相同视图控制器层次结构 在图1-14中。您可以看到内容视图显示了视图 控制器,但它没有提供演示文稿上下文。代替, 视图控制器由选项卡控制器呈现。因为 即使呈现视图控制器只覆盖了 屏幕的一部分由标签视图控制器提供给它 显示的视图控制器使用选项卡视图拥有的整个区域 控制器。在我的自定义导航控制器中我没有 覆盖与呈现或解除视图相关的任何方法 控制器。添加的所有子视图控制器都是 添加为childViewControllers并添加了他们的视图 自定义导航控制器。