Ich bin auf ein Problem mit einer SplitViewController-App gestoßen. Wenn ich eine Zeile aus der Tabelle in der Hauptansicht auswähle, ersetze ich die Detailansicht durch ein Ersetzen-Segment. Das Problem besteht darin, dass es jedes Mal eine neue Instanz erstellt/den Detailansicht-Controller neu lädt. Gibt es eine Möglichkeit, dass ich es haben kann, so wird es die Detailansicht mit der vorherigen Instanz ersetzen, wenn es bereits instanziiert wurde. Ich möchte, dass der Status für Detailansichten beibehalten wird, z. B. Eingabe in Textfelder.Ersetzen Sie das Segment, indem Sie eine neue Instanz erstellen
Antwort
Kann nicht gemacht werden. Ein segue instanziert immer einen View-Controller
ich die Segue ersetzen verwenden, aber in der MasterVC implementiere ich
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([identifier isEqualToString:@"showCalculatorViewController"]) {
if (self.splitViewController) {
NSObject *currentDetail = [self.splitViewController.viewControllers lastObject];
if ([currentDetail isKindOfClass:[RootCalcViewController class]]) {
....
Dann habe ich in den neuen Eigenschaften der vorhandenen VC füllen, und das Rück NO.
Aber ich habe keinen UINAvigationController als meine erste Detailansicht Controller, da ich die Navigation von den MasterVCs behandeln.
Auch in AppDelegate, didFinishLaunchingWithOptions die richtige Detail VC muss eingerichtet werden. Der generierte Code geht davon aus, dass es sich um einen UINavigationController handelt. Ähnlich in der generierten MasterViewController viewDidLoad. Dies erspart Ihnen einige App-Abstürze, wenn Sie das Detail UINAvigationController ersetzen.
Wenn ich verschiedene View-Controller lade, lasse ich die "Replace segues" ersetzen.
Oder - Sie könnten einfach Ihre DetailController implementieren Singleton Muster und Weiterleiten aller Anrufe an + neu, + Alloc oder dergleichen zu Ihrem Singleton-Methode.
- 1. Erstellen Sie eine neue Instanz von Bind generiert obj
- 2. So erstellen Sie eine neue Instanz von Sql Server 2005
- 3. Erstellen Sie eine neue EC2-Instanz mit benutzerdefiniertem ISO
- 4. So erstellen Sie eine neue Instanz einer Klasse, indem Sie Object [] anstelle von Parameterliste mit Reflektion übergeben
- 5. Ersetzen Sie eine neue Zeile in TSQL
- 6. Erstellen Sie die Instanz
- 7. Können Sie eine neue Model-Instanz erstellen, ohne sie in der Datenbank zu speichern?
- 8. erstellen neue Instanz von Singleton
- 9. So erstellen Sie eine Instanz einer Annotation
- 10. Fehler "Erstellen Sie eine konkrete Instanz!"
- 11. So erstellen Sie eine neue Instanz des Wasserlinienmodells, ohne sie zu speichern
- 12. Erstellen Sie eine neue Farbe zeichnen
- 13. Erstellen Sie eine neue Kundengruppe - Prestashop
- 14. Keine neue ViewController-Instanz erstellen
- 15. Instanziieren Sie eine neue Instanz von UIViewController in sich selbst
- 16. Java: Filewriter: Erstellen Sie eine neue Linie
- 17. Erstellen Sie eine neue Windows-Ereignisanzeige Anmelden
- 18. Erstellen Sie eine neue Methode im Geschäft?
- 19. Erstellen Sie eine Maske, die das signifikanteste gesetzte Bit markiert, indem Sie nur bitweise Operatoren verwenden.
- 20. Erstellen Sie eine neue Tabelle und zeigen Sie Google-Skript
- 21. Sollten Sie dem DOM mithilfe von innerHTML HTML hinzufügen oder indem Sie nacheinander neue Elemente erstellen?
- 22. Ersetzen Sie jede Instanz zwischen zwei Zeichen
- 23. ersetzen Sie ein Zeichenfolge-Segment aus dem Eingabestream
- 24. Holen Sie sich eine neue Instanz einer Frühlingsbohne
- 25. Ersetzen Sie neue Zeile Zeichen in Freimarker
- 26. So senden Sie eine LatLng-Instanz an neue Absicht
- 27. So behandeln Sie eine IOException, indem Sie eine neue Aktivität in Android starten
- 28. eine neue Tupel-Klasse erstellen, indem Sie die letzte Art knallt
- 29. JQuery - Erstellen Sie neue Radiobuttons
- 30. Verbinden Sie mouseMoveEvent mit dem Widget, indem Sie eine Unterklasse erstellen
Ich fange gerade an, mit dem iPad-Storyboard zu arbeiten (einschließlich Split-View-Controllern), aber gibt es kein Push-Segment, das Sie anstelle des Ersetzens verwenden können? Oder erlaubt das Framework Push in diesem Fall nicht? Dies funktioniert gut auf dem iPhone-Idiom. – Rob
Ich versuchte Push, entschied aber, dass ich die Rückwärtsnavigation nicht wollte. Ich erinnere mich, dass auch jedes Mal eine neue Instanz erstellt wurde. Ich habe es irgendwie gelöst, indem ich jedes Detail ViewController als eine Eigenschaft auf dem Master ViewController deklariert und sie auf dem ersten Segment instantiiert habe. Dann rufe ich performSegue nicht auf und schiebe stattdessen manuell die Instanzen in die Detailansicht. –
Ich würde auch gerne wissen, wie man Ersatzsegmente verwendet. Was ist der Unterschied zwischen einem Ersatzsegment und einem Push-Segment? Wenn der ersetzte View-Controller im Speicher verbleibt, wie kann er dann wiederhergestellt werden? – Matt