WatchKit reloadRootControllersWithNames verursacht einen Fehler, mit pageController oder nach push / pop

8

Ich habe eine einfache Watchkit-App, die eine seitenbasierte Navigation von 3 Interface-Controllern lädt. Das funktioniert gut, aber ich möchte dann eine Aktion auslösen, um die Seitensteuerung zu entfernen und im Wesentlichen zum ursprünglichen InterfaceController zurückzukehren, der beim Laden der App vorhanden war.

%Vor%

Die seitenbasierte Navigation wird entfernt, die ursprüngliche Navigation wird nach einem kurzen Spinner geladen. Es funktioniert jedoch nicht ordnungsgemäß und ursprüngliche Aktionen führen zu diesem Fehler.

%Vor%

Gibt es eine bessere Möglichkeit, den ursprünglichen InterfaceController sauber zu laden?

BEARBEITEN, 2/19

Es scheint, dass es auch andere Aktionen gibt, die diesen Fehler verursachen. Zum Beispiel, wenn Sie zu einem zweiten InterfaceController und dann popController zurückkommen, wird der Fehler oft angezeigt. Es bezieht sich immer auf einen zweiten Aufruf dieser Funktion.

%Vor%

EDIT2, 3/18

Wie bereits erwähnt, ist dies zu 100% reproduzierbar, indem Sie den popController-Befehl "seguePush" ausführen und dann versuchen, "RootControllersWithNames" neu zu laden.

Wenn der seguePush / popController nicht vorher ausgeführt wird, funktionieren die reloadRootControllersWithNames einwandfrei.

Diese Situation scheint zusätzlich zu der multi- & gt; single-multi-Instanz dieses Fehlers zu sein.

    
Miro 19.02.2015, 00:07
quelle

4 Antworten

0

Ich konnte meine Instanz dieses Problems lösen, indem ich popController nicht auf einem Pushed-View-Controller verwendete. Stattdessen benutze ich einen reloadRootControllersWithNames anstelle von popController.

Wie dies sowohl Push als auch Paging ermöglicht, über ein Beispiel:

  1. Drücken Sie einen View-Controller
  2. reloadRootControllersWithNames, um zum ursprünglichen Controller zurückzukehren. (Der Übergang ist nicht ganz so animiert, reicht aber aus)
  3. Erstellen Sie einen seitenbasierten View-Controller.
  4. reloadRootControllersWithNames, um zum ursprünglichen Controller zurückzukehren
  5. Wiederholen Sie 1 oder 3 nach Bedarf.

Dies beseitigt den Fehler auf Kosten von nicht animierten popControllern und ermöglicht teilweises Schieben und Paging. Es würde jedoch keine komplexere Push-Navigation erlauben.

Es gibt möglicherweise eine bessere Methode, um zu einem Sub-Interface-Controller ohne Push-Aufruf zu navigieren, aber ich bin mir dessen noch nicht bewusst.

    
Miro 13.04.2015, 14:58
quelle
2

Das ist eigentlich kein Bug, denn laut Apple:

  

Sie können hierarchische und seitenbasierte Schnittstellenstile nicht kombinieren. Zur Entwurfszeit müssen Sie den Stil auswählen, der am besten zum Inhalt und Design Ihrer App passt.

Leider können wir hierarchische und seitenbasierte Navigationsmuster nicht in derselben Watch App kombinieren.

Nur eine von vielen Einschränkungen, mit denen wir bei der Entwicklung von Apps für  Watch

umgehen müssen     
topes 12.04.2015 20:05
quelle
1

Dies ist ein Fehler in WatchKit in Xcode 6.2 Beta 5. Bitte täuschen Sie das folgende Radar auf Apples Fehlermeldesystem , um die Priorität zu erhöhen, um dies zu beheben.

In der Zwischenzeit kann eine Problemumgehung, die ich gefunden habe, in den Entwicklerforen gefunden werden. Was Sie tun können, ist, einen Dummy-Schnittstellencontroller zu jedem einzelnen Schnittstellencontroller-Seitensatz hinzuzufügen, so dass Sie immer zwei haben. Dies wird den Fehler beheben, bis Apple den Fehler behoben hat (hoffentlich in Beta 6). Bitte dupe!

    
cnoon 19.02.2015 15:53
quelle
0

Keine oder die obigen Antworten funktionierten für mich. Dieses Problem begann, als ich die Symbolnamen für die App und den Namen der Watch-App änderte. Ich habe es so gelöst:

  • 1) Klicken Sie auf Ihre Watch App Ziel & gt; Fähigkeiten & gt; Achte auf die App-Gruppe ist in EIN.
  • 2) Stellen Sie sicher, dass die App-Gruppe ausgewählt ist.
  • 3) Klicke auf den eingekreisten Pfeil Refresh icon (das wird anscheinend nur Aktualisieren Sie dieses Ding, wenn Sie es bereits hatten)
  • 4 - Wiederholen Sie die Schritte 1-3, aber auch für Ihr Watch App EXTENSION-Ziel.
  • 5-Klicken Sie auf die Schaltfläche Scheme (auf der rechten Seite der Schaltfläche STOP), und klicke auf Edit Schemes.
  • 6-Klick Run & gt; Info 7-In executable wählen Sie Ihr Ziel (eigentlich ist es sollte schon ausgewählt sein, aber dieses Fenster scheint zu öffnen Aktualisieren Sie die Option und löschen Sie den Fehler)

Offensichtlich werden all diese Dinge nicht automatisch aktualisiert, wenn Sie den Icon-Namen (Zielnamen) ändern und Sie müssen zu diesen Menüs gehen und sie öffnen, um sie manuell zu aktualisieren. Schande über Apple vielleicht?

    
Josh 01.02.2016 14:28
quelle

Tags und Links