UINavigationController в Watchkit

#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 или a Dismiss Button .

ВАЖНО: часы отображаются на панели навигации каждого немодального экрана приложения. Вы не можете удалить часы, поэтому обязательно учитывайте это в своих проектах.

Я написал это, чтобы прийти к выводу, что вы хотите удалить Back Button , правильно? Если это так, вы можете попробовать это:

 WKInterfaceController.reloadRootPageControllers(withNames: ["DestinationInterfaceController"], contexts: nil, orientation: .horizontal, pageIndex: 0)
 

В DestinationInterfaceController , вы должны ввести идентификатор контроллера интерфейса назначения.

Комментарии:

1. Ответ на ваш первый вопрос: я хотел бы скрыть панель навигации и показывать только часы. Этого можно добиться, установив флажок «Полноэкранный режим» в раскадровке. В результате моя забота не в том, чтобы скрыть «кнопку возврата». Кроме того, в «Info.plist» есть две опции для скрытия / отображения панели состояния (навигации) без использования раскадровки. «Вид строки состояния на основе контроллера» и «строка состояния изначально скрыта». Однако предостережение заключается в том, что вы можете скрыть / показать строку состояния для всего приложения, а не для отдельных контроллеров, как я намереваюсь.