UIAlertController не привязан к childViewController, а отображается за ним на parentViewController - PullRequest
0 голосов
/ 19 марта 2019

Я создал левый ящик меню и добавил его в качестве контроллера дочернего представления.В левой части меню у меня есть кнопка выхода из системы, которая должна отображать UIAlertController.Проблема, с которой я сталкиваюсь, заключается в том, что UIAlertController отображается за дочерним представлением (левый ящик) на родительском представлении.

//ParentVC 
//adding childVC
  DrawerViewController *menuController = [[DrawerViewController alloc] init];
  [self addChildViewController:menuController];
  [self.view addSubview:menuController.view];
  [menuController didMoveToParentViewController:self];
  [[[[UIApplication sharedApplication] delegate] window] addSubview:menuController.view];
  menuController.definesPresentationContext = YES;

//displaying childVC from parentVC
  [UIView animateWithDuration:0.3 animations:^{
    [menuController.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [self.view setFrame:CGRectMake(self.view.frame.size.width*0.7, 0, self.view.frame.size.width, self.view.frame.size.height)];

  }];


//ChildVC
//logout action
-(void) logOutButtonListener:(UIButton *) sender{
NSLog(@"logOutButtonListener");

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Logout" message:@"Are you sure you want to logout?" preferredStyle:UIAlertControllerStyleAlert ];

UIAlertAction* noButton = [UIAlertAction actionWithTitle:@"no" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:noButton];

UIAlertAction* yesButton = [UIAlertAction actionWithTitle:@"yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){
    //logout logic
}];
[alert addAction:yesButton];

[self presentViewController:alert animated:YES completion:nil];
}

Я хочу показать UIAlertController поверх контроллера дочернего представления.

1 Ответ

1 голос
/ 19 марта 2019

Проблема в том, что вы добавляете menuController.view в главное окно поверх всех других контроллеров представления в вашем стеке, включая контроллер оповещений.Если вы хотите, чтобы меню было выше всего, но все еще находилось под контроллером оповещений, добавьте его в что-либо в дереве представления, кроме окна (см. Текущий VC или что-то выше в стеке), чтобы оно не отображалось поверхпредупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...