Frage

In Coredata, ich habe die Datengraph mit einigen Einheiten, und jedes Objekt wird in einem View-Controller bestückt, in einem definierten Bildschirm, möchte ich einige (> 1) Pop-out-Objekten in eine Definition-Bildschirm zurückzukehren.

Ich habe versucht, die Ansicht-Controller aus dem Navigationsstapel mit diesen Zeilen Code Pop:

ObjectA *objectA = objectD.objectC.objectA;
NSLog(@"objectA name: %@", objectA.name);
MyViewController    *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil withObjectA:objectA];
[self.navigationController popToViewController:controller animated:YES];
[controller release];

Die Objecta, ObjectB, ObjectC, ObjectD sind alle Objekte aus der Liste meiner Daten Graphen (mit der inversen Beziehung, ich kann die Objecta vom ObjectD durch ObjectC Abfrage zurück)

Die folgende Fehlermeldung wird ausgelöst:

Assertion failure in -[UINavigationController popToViewController:transition:], /SourceCache/UIKit_Sim/UIKit-984.38/UINavigationController.m:1807

Es gibt zwei Fragen hier:

  • Wenn die beiden Objekte sind verschieden, wie kommt sie den gleichen Namen haben? die inverse Beziehung kann nicht die Objecta zurück, in dem ich zu initialisieren verwendet MyViewController?
  • Wie geht es Ihnen normalerweise popToViewController? Wie kann ich den aktuellen Status meiner Navigationssteuerung speichern / laden implementieren, so dass, wenn die Anwendung beendet wird, kann ich den Navigationscontroller neu zu laden? Was sind die besten Praktiken?
War es hilfreich?

Lösung

Das hat nichts mit Core Data zu tun. Sie sind einen neuen View-Controller erstellen, wenn Sie nur Ihre vorhandene MyViewController Instanz verweisen. Die neu geschaffene Controller ist offensichtlich nicht auf den Stapel der Navigation-Controller und so erhalten Sie eine Ausnahme, wenn Sie versuchen, es zu wechseln.

Mit der self.navigationController.viewControllers Array den Controller verweisen, das sich bereits auf dem Stapel der nav-Controller.

Andere Tipps

popToViewController: Sie können nur zu einem vorhandenen Viewcontroller zurücknehmen, die auf dem UINavigationController Stack bereits ist. Sie sind eine völlig neue Steuerung Aufteilung und dann, um es zu Pop versuchen.

Die Core Data Objektgraph Ihrer Modellobjekte ist hier nicht direkt relevant; alle popToViewController. mit der Viewcontroller-Objekte ist der Stapel zu tun

zu einem bestimmten Viewcontroller Pop, benötigen Sie einen Verweis auf das Objekt Viewcontroller.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top