Как представить модальное значение над представлением, которое было добавлено в 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 ответ
Вы должны переосмыслить способ добавления вида наложения.
Если вы хотите, чтобы представление перекрывало панель навигации, вы можете просто добавить это представление в качестве верхнего подпредставления панели навигации. Или вы можете добавить его в качестве верхнего подпредставления представления контроллера навигации.