WKInterfaceMenu устанавливает модель InterfaceController в качестве корневого InterfaceController

При вызове меню из модального WKInterfaceController, представленного из rootController через presentControllerWithName:context:, модальный контроллер становится корневым контроллером:

введите здесь описание изображения‹ — Модальное (см. Cancel)

введите здесь описание изображения‹— Меню

введите здесь описание изображения‹— Root? (нет Cancel)

Является ли это ошибкой WatchKit или модальные контроллеры не должны иметь меню?

"Решение"

Поскольку это известная ошибка, мой временный обходной путь состоял в том, чтобы просто добавить кнопку Cancel в модальный контроллер и использовать reloadRootControllersWithNames:contexts:, чтобы представить их как root. Кнопка Cancel перезагружает корневой контроллер на мой первоначальный корневой контроллер.


person Patrick Perini    schedule 07.05.2015    source источник


Ответы (1)


Это известная ошибка, присутствующая в WatchKit/iOS 8.2 и 8.3. Проблема возникает, когда вы представляете модальный интерфейс, который затем представляет другой модальный интерфейс сверху (например, меню Force Touch).

Вы можете найти (неприятный) обходной путь здесь: Apple Watch: строка состояния не отображается после показа модального экрана из постраничной навигации

person Mike Swanson    schedule 07.05.2015
comment
Можно просто полностью отказаться от модального представления и с самого начала предоставить собственную кнопку Cancel. - person Patrick Perini; 07.05.2015
comment
Большинство разработчиков, с которыми я разговаривал, решили пока просто добавить свою собственную кнопку Cancel. Странно иметь две одинаковые кнопки, но на данный момент это один из немногих разумных обходных путей. - person Mike Swanson; 08.05.2015