2016-06-29 17 views
0

Ich versuche, eine einfache Komplikationsvorlage für eine WatchOS-App zu erstellen, aber ich stehe fest und versuche zu verstehen, wann die ComplicationController Klassenmethode getPlaceholderTemplateForComplication() aufgerufen wird.Wann wird getPlaceholderTemplateForComplication() -Methode aufgerufen?

Apples Dokumentation sagt

Wenn Ihre App zum ersten Mal gestartet wird, ClockKit diese Methode aufruft,

aber wenn ich den Simulator laufen, ist es meist nicht ausgelöst.

Das Ausschalten der App "Show App on Apple Watch" und das erneute Einschalten hilft nicht.

Wann wird getPlaceholderTemplateForComplication() Methode aufgerufen werden?

+0

Bitte bearbeiten Sie Ihre Frage zu a) erwähnen, dass der Platzhalter nicht erscheint, während Sie das Zifferblatt anpassen, und b) fügen Sie Ihren 'getPlaceholderTemplateForComplication' Code hinzu. –

+0

Die Platzhaltervorlage wird in der App angezeigt, nachdem die Platzhaltermethode aufgerufen wurde. Das ist normal und ich habe damit keine Probleme. Das Problem ist, dass die Methode nicht immer aufgerufen wird, und ich muss wissen, wie und wann sie ausgeführt werden soll. – Julsteri

+0

Das System ruft die Methode * einmal * auf und speichert dann das Ergebnis zwischen. Es wird die Methode nicht jedes Mal aufrufen, wenn Sie das Zifferblatt anpassen. Anstatt zu fragen, wie oder warum das System etwas macht, sollten Sie das Symptom beschreiben, das Sie gerade erleben. Wird der Platzhalter beim Anpassen angezeigt oder nicht? Auch ** bitte Code anzeigen **. Das Problem liegt eher in Ihrem Code, als ob das System Ihre Methode aufruft oder nicht, da das System optimiert ist, um zu wissen, wann es aufgerufen werden soll oder nicht. –

Antwort

0

Die Platzhaltervorlage wird aufgerufen, wenn Sie das Zifferblatt anpassen und auswählen, welche Komplikation angezeigt werden soll. Das System ruft getPlaceholderTemplateForComplication()einmal auf, dann wird das Ergebnis zwischengespeichert. Es wird die Methode nicht jedes Mal aufrufen, wenn Sie die Komplikation anpassen.

Während Sie durch die Komplikationsmöglichkeiten blättern, werden die dort angezeigten statischen Details für die Platzhaltervorlage zurückgegeben.

Sobald Ihre Komplikation aktiv ist - auf dem Zifferblatt angezeigt - wird die Platzhaltervorlage nicht aufgerufen. Stattdessen kommen die Timeline-Einträge aus diesen complication dataSource Methoden:

  • getCurrentTimelineEntryForComplication und optional von
  • getTimelineEntriesForComplication wenn Zeitreisen unterstützt wird.

installieren oder eine Uhr App zu entfernen, hat nichts mit der Platzhalter-Vorlage zu tun.

Für watchOS 3:

watchOS 3 unterstützt eine Gesichts Galerie, die der Benutzer Zifferblätter und Komplikationen sehen und anpassen lassen können. Die statischen Komplikationsdaten, die in der Galerie angezeigt werden, stammen ebenfalls aus der Platzhaltervorlage.

+0

Ich führe das Watchkit App-Schema auf einem iPhone + Apple Watch Simulator. Ich habe auch Haltepunkte in allen von Ihnen erwähnten Methoden hinzugefügt. Die Ausführung erreicht den Haltepunkt in der Methode 'getPlaceholderTemplateForComplication' nicht wie beschrieben. Ich habe versucht, das Zifferblatt anzupassen und durch Komplikationen zu scrollen. Meine Komplikation zeigt sich leer.Muss ich den Cache des Watches irgendwie zurücksetzen? Ich habe versucht, Inhalte und Einstellungen in den Simulatoren zurückzusetzen. – Julsteri

+0

Es wird diesen Haltepunkt nicht erreichen, da Sie nicht debuggen, was die Uhr tut, wenn sie das Zifferblatt anpasst. Das System hat eine Instanz Ihres Komplikations-Controllers instanziiert, Sie können jedoch keine Verbindung zu ihm herstellen oder interaktiv debuggen. Aber Debugging ist nicht wirklich das Problem. Vielleicht sollten Sie Ihre Frage bearbeiten und beschreiben, was Sie meinen, wenn Ihre Komplikation als "leer" angezeigt wird. Während der Anpassung des Zifferblattes oder während auf dem Zifferblatt aktiv ist? –

+0

Meinst du, der Simulator kann über Breakpoints laufen? Nach meiner Erfahrung erreicht es manchmal die Haltepunkte, aber nicht immer. Wenn ich im Anpassungsmodus zu meiner Komplikation blättern möchte, wird der Name meiner Komplikation neben dem Container angezeigt, aber der Container ist leer. Das bedeutet, dass das System die Komplikationsvorlagen nicht zwischengespeichert hat. – Julsteri