2016-10-27 10 views
2

私は階層ナビゲーションを使用する簡単な「タイマー」watchOSアプリケーションを持っています。私は時計のスプリングボードに戻るために、デジタルクラウンを押して、アプリのアイコンをタップし、私が使用していたのと同じインターフェイスコントローラに戻すことができます。watchOS複雑な操作をタップした後にアプリが再起動する

私が時計の面に戻り、アプリの複雑さを叩くと、アプリは起動しますが、再開したようです:現在の状態は失われます。これを防ぐ方法はありますか?

答えて

0

アプリがメモリからスワップアウトされて停止する方法を求めているように聞こえますか?

もしそうなら、iOSと同じように、これは不可能です。明らかに時計は電話よりメモリが少なく、スワップアウトされる可能性が高いです。

何をする必要があるいくつかの永続化層にあなたの状態を保存している - 例えばNSUserDefaults - アプリの再起動時に状態をリロードできる

+0

いいえ、アプリはまだメモリに残っています。アプリアイコンをタップすると、アプリが再開します。合併症をタップすると、それが再開されます。私は、私のアプリの以前の(メモリ内の)状態の短いフラッシュを見て、その後、ルートインターフェースコントローラをロードします。 – endemic

+0

しかし、UserDefaultsに関するあなたの提案は良いものです。私はおそらくその実装を終了します。 – endemic

+0

'flash'はおそらく、システムが以前の状態の画面を撮影したスナップショットです。時計は非常に遅い(電話と比較して)ので、しばしばスナップショットとアプリの再読み込みの間に「結合を見る」ことができます –

0

タップの複雑さで時計アプリを開くと、アプリは自動的にルートインターフェイスコントローラに戻ります。これはシステム強制動作です。

以前の状態を保持したい場合は、アプリケーションの階層をページベースのインターフェースに変更する必要があります。

ページベースのインターフェイスでのユーザー対話は、ナビゲーションベースのインターフェイスとまったく同じです。 pushController(withName:context:),pop()およびpopToRootController()の方法をbecomeCurrentPage()に置き換えることができます。私はまた、あるページインターフェースから別のページインターフェースへの切り替えが、ナビゲーション(プッシュ/ポップ)よりも速いことも発見しました。

関連する問題