Как представить модальное значение над представлением, которое было добавлено в 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 ответ

Решение

Вы должны переосмыслить способ добавления вида наложения.

Если вы хотите, чтобы представление перекрывало панель навигации, вы можете просто добавить это представление в качестве верхнего подпредставления панели навигации. Или вы можете добавить его в качестве верхнего подпредставления представления контроллера навигации.

Другие вопросы по тегам