2016-10-27 1 views
2

У меня есть простое приложение watchOS для таймера, которое использует иерархическую навигацию. Я могу нажать цифровую крону, чтобы вернуться на часовую панель, затем коснуться значка приложения и вернуться к тому же интерфейсу, который я использовал.WatchOS 3 приложение перезагружается после нажатия на сложность

Если я вернусь к сторожу часов и коснусь усложнения моего приложения, приложение запустится, но, похоже, перезагрузилось: я теряю свое текущее состояние. Есть ли способ предотвратить это?

ответ

0

Похоже, вы спрашиваете, как остановить перенос вашего приложения из памяти?

Если это так, как на iOS, это невозможно - и, очевидно, часы имеют меньше памяти, чем телефон, поэтому с большей вероятностью будут заменены.

Что вам нужно сделать, это сохранить ваше состояние в каком-то постоянном слое - например. NSUserDefaults - поэтому, когда приложение перезагрузится, оно может перезагрузить свое состояние.

+0

Нет, приложение все еще находится в памяти. При нажатии на значок приложения приложение возобновляется. Нажатие на это осложнение перезапускает его. Я вижу кратковременную вспышку предыдущего (в памяти) состояния моего приложения, а затем загружает корневой контроллер интерфейса. – endemic

+0

Однако ваше предложение о UserDefaults является хорошим. Я, вероятно, в конечном итоге реализую это. – endemic

+0

«Вспышка» - это, вероятно, моментальный снимок, который система сделала на экране в предыдущем состоянии. Часы очень медленные (по сравнению с телефонами), поэтому вы часто можете «видеть соединение» между моментальным снимком и перезагрузкой приложения –

0

Если вы откроете приложение для наблюдения за снимками при кратковременном усложнении, приложение автоматически вернется к контроллерам корневого интерфейса. Это система принудительного поведения.

Если вы хотите сохранить предыдущее состояние, вам необходимо изменить иерархию вашего приложения на интерфейсы на основе страниц.

Взаимодействие с пользователем в интерфейсах на основе страниц может быть подобно навигационным интерфейсам. Вы можете заменить pushController(withName:context:), pop() и popToRootController() методами на becomeCurrentPage(). Я также обнаружил, что переход с одного интерфейса страницы на другой также быстрее, чем навигация (push/pop) на другой.

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