4

カスタムの ClockKit Complication を動作させようとしています。

  1. に準拠したカスタムComplicationControllerCLKComplicationDataSourceを作成しました。として Watch 拡張機能の plist に追加されCLKComplicationPrincipalClassます。

時計でコンプリケーションを選択して有効にできますが、実際のプレースホルダーではなく「---------------」しか表示されません。

私が試したこと

  • override init(){…}ComplicationController にカスタムを追加し、デバッグ用にブレーク ポイントを配置しました。しかし、Complicationビルド スキームを実行している場合でも、このブレーク ポイントに到達することはありません。私のカスタム ComplicationController はインスタンス化されていないようです。

  • ログ メッセージは表示されますExtension received request to wake up for complication support.が、これがコードのどこでトリガーされているかが明確ではありません。

  • InterfaceControllerまた、アクティブな合併症について調べるために、メインから次の呼び出しを試みました

    if let server = CLKComplicationServer.sharedInstance() {
        for complication in server.activeComplications {
            server.reloadTimelineForComplication(complication)
        }
    }
    

    …しかし、servernil を返します。アクティブでリロードされている合併症はありません。

質問

  • カスタム ComplicationController を正常に接続するにはどうすればよいですか?

    また、デバッグに関する追加のヒントも歓迎します。

    通常、ウォッチ シミュレーターまたは iPhone のウォッチ アプリからコンプリケーションを削除するだけで十分ですか、それとも、コンプリケーション関連の更新が有効であることを確認するには、ウォッチ アプリ全体を再インストールする必要がありますか? また、カスタム ComplicationController 内で何かをログに記録する場合、Complications ビルド スキームまたは通常の Watch アプリ ビルド スキームで実行している場合にのみ、その出力を表示する必要がありますか?

問題を見つけるためのアイデアは大歓迎です。

4

1 に答える 1

16

実際に時計でコンプリケーションを選択できるので、プロジェクトに関してすべてが正しくセットアップされているように思えます。ブレークポイントに達していないため、コンプリケーションがカスタム コントローラーを見つけられないように聞こえます。swift を使用しているため、コントローラーのモジュールを指定する必要があります。時計アプリの plist の CLKComplicationPrincipalClass 値を次のように変更してみてください。

$(PRODUCT_MODULE_NAME).ComplicationController
于 2015-12-30T22:20:37.183 に答える