#ios #swift #iphone #apple-watch #watchos-6
#iOS #swift #iPhone #apple-часы #watchos-6
Вопрос:
Есть ли способ управлять панелью навигации в watchOS аналогично тому, как мы можем управлять ею в iOS с помощью UINavigationController?
То, что я пытаюсь сделать, это скрыть панель навигации для определенных WKInterfaceControllers и показать ее для других. Что я могу сделать до сих пор, так это скрыть панель навигации для всего приложения watchOS.
Ответ №1:
Что именно вы подразумеваете под сокрытием NavigationBar
WKInterfaceController
?
Как мы знаем, в Apple Watch есть два способа навигации между контроллерами интерфейса:
- Иерархический (добавление сцен в стек)
Выводит на экран другой контроллер интерфейса
- На основе страниц (модальное представление сцен)
Отображает другой контроллер интерфейса поверх текущего контроллера интерфейса.
В документации Apple говорится, что
Панель навигации отображается в верхней части экрана Apple Watch. Система отображает часы на одном конце панели навигации и предоставляет область заголовка на противоположном конце. Область заголовка также может включать навигационные элементы, такие как a
Back Button
или aDismiss Button
.
ВАЖНО: часы отображаются на панели навигации каждого немодального экрана приложения. Вы не можете удалить часы, поэтому обязательно учитывайте это в своих проектах.
Я написал это, чтобы прийти к выводу, что вы хотите удалить Back Button
, правильно? Если это так, вы можете попробовать это:
WKInterfaceController.reloadRootPageControllers(withNames: ["DestinationInterfaceController"], contexts: nil, orientation: .horizontal, pageIndex: 0)
В DestinationInterfaceController
, вы должны ввести идентификатор контроллера интерфейса назначения.
Комментарии:
1. Ответ на ваш первый вопрос: я хотел бы скрыть панель навигации и показывать только часы. Этого можно добиться, установив флажок «Полноэкранный режим» в раскадровке. В результате моя забота не в том, чтобы скрыть «кнопку возврата». Кроме того, в «Info.plist» есть две опции для скрытия / отображения панели состояния (навигации) без использования раскадровки. «Вид строки состояния на основе контроллера» и «строка состояния изначально скрыта». Однако предостережение заключается в том, что вы можете скрыть / показать строку состояния для всего приложения, а не для отдельных контроллеров, как я намереваюсь.