如何在添加到keyWindow的视图上方显示模态?

时间:2016-03-07 22:05:03

标签: ios objective-c modalviewcontroller keywindow

我已将视图添加到[[UIApplication sharedApplication] keyWindow],因为我们希望它与导航栏重叠。

现在我们想点击视图上的按钮并以模态方式打开一个窗口,理想情况下使用presentViewController。有没有办法让这个模态视图出现在(在z轴上)keyWindow视图上?

我的回答

我最后将自己的第一个自定义UIViewController添加到self.tabBarController。这允许UIViewController与导航栏和标签栏重叠。

然后我使用[self.navigationController presentViewController:animated:completion]来呈现模态,它位于z轴上的所有其他位置。

以下是将UIViewController添加到self.tabBarController

的代码
        MyCustomViewController * overlayView = [[MyCustomViewController alloc]
                      initWithNibName:@"MyCustom"
                      bundle:nil];

        UIViewController *parentViewController = self.tabBarController;
        [modalView willMoveToParentViewController:parentViewController];

        // set the frame for the overlayView
        overlayView.view.frame = parentViewController.view.frame;

        [parentViewController.view addSubview: overlayView.view];

        [parentViewController.view needsUpdateConstraints];
        [parentViewController.view layoutIfNeeded];

        // Finish adding the overlayView as a Child View Controller
        [parentViewController addChildViewController: overlayView];
        [overlayView didMoveToParentViewController:parentViewController];

1 个答案:

答案 0 :(得分:0)

您应该重新考虑添加叠加层视图的方式。

如果您希望视图与导航栏重叠,则只需将此视图添加为导航栏的顶级子视图。或者您可以将其添加为导航控制器视图的顶级子视图。