2016-07-15 14 views
0

私は、複数のWKInterfaceController間でWCSessionを共有する必要がある状況があります。シングルトンアプローチは機能しません。クラスにデリゲートを設定すると、他のクラスのデリゲートはすべて無効になります。シナリオ:インターフェースAは、データ内容に基づいて現在のインターフェースBを送受信します。インターフェースBをタップし、追加のデータを要求して受信します。 WCSessionをAとBの間でどのように共有しますか?WatchConnectivity複数のWKInterfaceController間でセッションを共有する方法は?

答えて

1

The other answerは、アプリ全体のセッションが機能するとは説明していません。

は、すべてのインターフェイスコントローラで使用できるシェアルトンWCSessionシングルトンを使用します。アプリのライフサイクルの非常に早い段階でセッションマネージャをインスタンス化するだけで、それを独自のデリゲートにすることができます。

各インターフェイスコントローラがセッション委任を処理しようとするのではなく、セッションマネージャ(シングルトン)がインターフェイスコントローラのすべての転送を処理できます。

他の回答で述べたように、通知を使用して、興味のあるインターフェイスコントローラに新しいデータが到着したときを知らせることができます。

セッションやデータマネージャなどのモジュラーアプローチを使用すると、コントローラに実際に属していないコードを残さないようにすることができます。また、各モジュールのテストと活用が容易になります。

Stack Overflowにいくつかの既存の回答が掲載されているので、このコードはここでは繰り返されません。さらに、このテクニックを詳しく網羅した のWeb上の記事もあります。たとえば:

あなたは、多くの場合、時計アプリ、たとえば、間でデータを共有する方法を尋ねる狭く質問内の回答のこれらのタイプを見つけることができますおよびその合併症コントローラ。

0

NSNotificationを使用し、すべてのビューコントローラの変更をリッスンします。

+0

ああ、良い提案。 –

関連する問題