обновление:
Я снова столкнулся с этой проблемой и нашел другой путь. Если презентационный контроллер не встроен в контроллер навигации, он будет скрыт, если представленный контроллер не будет полноэкранным и станет черным. Метод setModalPresentationStyle: UIModalPresentationCurrentContext может применяться только к контроллеру навигации. Поэтому внедряйте контроллер представления в UINavigationController, установите для него UIModalPresentationCurrentContext и представите новый контроллер - вы получите диалоговый контроллер.
Я представляю контроллер поиска, у него есть tableView, который нажимает на подробный контроллер стека.
Подробный контроллер может представлять контроллер представления с сообщением, он состоит из небольшого UIView и полупрозрачного фона.
Проблема: при представлении последнего контроллера представлений все контрольные контроллеры под ним становятся скрытыми, а контроллер, который отображает контроллер поиска, становится видимым.
Вот что я делаю:
SearchViewController *viewController = [[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];
viewController.data = dataArray;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController setModalPresentationStyle:UIModalPresentationCurrentContext];
[self.navigationController presentViewController:navigationController animated:YES completion:nil];
чем таблица подталкивает подробный вид:
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[viewController setHidesBottomBarWhenPushed:YES];
viewController.dataItem = [data objectAtIndex:(NSUInteger) [indexPath row]];
[self.navigationController pushViewController:viewController animated:YES];
и окно представления подробных представлений:
MessageController *controller = [[MessageController alloc] initWithNibName:@"MessageController" bundle:nil];
controller.message = message;
[self presentViewController:controller animated:YES completion:nil];
Когда он отклоняется, все контроллеры под ним становятся видимыми.
обновление:
все, что я хотел, - это представить контроллер вида, который будет иметь uitableview. Из этой таблицы, чтобы показать подробное представление, которое сможет отображать окно сообщения. Поле сообщения должно быть другим контроллером представления. И когда отображается окно сообщения, все два предыдущих контроллера исчезают. это проблема.