Представить два контроллера представления из разных мест в иерархии представлений, чтобы одно представление могло быть сверху при возникновении прерывания?
У меня есть приложение, где контроллером корневого представления является UITabBarController, который имеет несколько вкладок контроллеров. На этой вкладке контроллеры могут представлять другие контроллеры представления, когда пользователь изменяет некоторые элементы. Когда происходит определенное уведомление, я хотел бы представить представление поверх всех других возможных представлений, даже если некоторые другие контроллеры уже представили один.
Когда нет перерыва:
(UITabController)
|
|
|
---------------
| | |
Ctrl1 Ctrl2 Ctrl3
|
|
Presented ctrl (TopView)
Я пытался сделать это, но это не удается:
Когда прерывание:
(UITabController)----->(Presented Interruption View --> not visible)
|
|
|
---------------
| | |
Ctrl1 Ctrl2 Ctrl3
|
|
Presented ctrl (TopView)
Каков хороший способ управления представлением, которое может быть представлено в любом месте иерархии представлений и в любое время?
1 ответ
Хороший способ справиться с вашей ситуацией - представить контроллер вида модально. Это тогда не затрагивает остальную часть вашей иерархии представления.
В вашем случае UINavigationController
сделает презентацию вместо UITabBarController
,
Сделайте отдельный контроллер представления и представьте его модально во время прерываний.
[ yourViewController presentViewController : viewControllerForInterruption animated : YES completion : ^{ // completion block
} ];
Вы можете продолжить, используя соответствующий метод отклонения.
[ viewControllerForInterruption dismissViewControllerAnimated:YES completion:^{ // completion block
} ];
Примечание. Это методы для iOS 6.