0

В моем приложении имеется контроллер верхнего уровня. Он перемещается между разными страницами и отображает панель навигации сверху, как обычно. Одной из этих страниц является контроллер табуляции с 3 вкладками. Каждая вкладка имеет свои собственные контроллеры навигации, потому что, находясь на вкладке, мне нужно открыть новую страницу, нажимая поверх этого содержимого вкладки (панель вкладок все равно будет видна). Моя проблема: «внутренняя» навигация работает нормально, толкает страницы и т. Д., Но она не может «взять управление» над панелью навигации поверх экрана. Эта панель по-прежнему отображает глобальную навигацию по страницам, в то время как я хочу показать «внутреннюю» навигацию и, если у внутреннего нет истории, то глобальная навигация. Говоря «показать навигацию», я имею в виду только кнопку «Назад».поведение iOS8 на вложенных контроллерах навигации

Обоснование: Приложение имеет контроллер с разделенным изображением на верхнем уровне - он становится простым навигационным контроллером для компактных размеров. Он перемещается по разным страницам, и одна из этих страниц выходит на медиаплеер/селектор (например, встроенное музыкальное приложение iOS). Селектор мультимедиа - это контроллер табуляции с 3 вкладками для фильтрации медиа, предположим, что это так же, как музыкальное приложение - песни, исполнители, альбомы. Когда вы переключаетесь на вкладку художников, вы можете увидеть таблицу художников. Нажав на один из них, вы откроете список песен для этого исполнителя, как в приложении «Музыка». Новая отфильтрованная страница запускается нормально, но панель навигации вверху экрана по-прежнему показывает глобальную навигацию. Я хочу объединить эти две навигационные системы, поэтому вам необходимо использовать контроль над этой панелью, когда это необходимо. Похоже, что он игнорирует логику вложенной навигации, или я не нашел хороший способ сделать это. Предположим, вы должны поместить приложение iOS Music в контроллер с разделенным представлением (или навигацией), и это всего лишь один из глобальных экранов, но при фильтрации треков по-прежнему требуется хорошая логика навигации.

+0

Вам необходимо настроить «navigationBarHidden» навигационного контроллера на «YES», когда это необходимо – Paulw11

ответ

1

Существует несколько способов добиться того, чего вы хотите здесь.

Вы можете написать немного дополнительного кода, чтобы определить, что делает кнопка «Назад» в глобальном навигаторе. Это означает замену встроенной кнопки возврата на идентичную - но которая вызывает вашу собственную кнопку метода.

Тогда вы можете иметь дело с ним с любым подходящим (отображается ли ваш внутренний навигатор и т. Д.).

Второй способ заключается в том, чтобы скрыть навигационную панель внешнего навигационного контроллера, когда вы собираетесь отображать внутреннюю навигационную панель, как указано в комментарии к Paulw11. Вы должны быть в состоянии получить бесшовные результаты в любом случае.

Смежные вопросы