Kann performSegueWithIdentifier verwendet werden, mit der AppDelegate?
Arbeite ich an einer app, die beim Start überprüft, für die gültige Anmeldeinformationen, und wenn Sie gefunden werden und nicht abgelaufen sind die wichtigsten split-view-controller angezeigt wird, und wenn nicht ein login-Bildschirm angezeigt werden soll.
Jedes Teil ist in Ordnung, die separat, aber ich bin kämpfen, mit der beste Weg, beim Start wählen Sie die richtige Ansicht für die Anzeige.
Ich habe versucht, die Einrichtung eines modal-segue von der root-Ansicht-controller, und in meiner application:didFinishLaunchingWithOptions: Funktion in der App-Delegate aufrufen dieser:
//Segue to the login view controller...
if (loginNeeded) {
[self.window.rootViewController performSegueWithIdentifier:@"LoginScreen" sender:self];
}
Diese logisch funktionieren sollte, aber auslösen leitet über von innerhalb der app delegieren, scheint unmöglich zu sein.
Was ist der ideale Ort und die Technik für den Umgang mit dieser?
- Warum sind Sie auch gehen, warf der Delegierte? Warum es nicht als erstes auf
ViewdidLoad
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, eine custom segue, per dieser post verstecken-a-segue-on-login-Prozess.
Alternativ, wenn Sie verzweifelt, um die login-Anzeige, bevor Sie den split-view-controller lädt, versuchen, etwas entlang der folgenden Zeilen...
Erstellen Sie Ihre login-Bildschirm auf dem Haupt-storyboard als, sagen wir, eine Unterklasse von
UIViewController
. Stellen Sie sicher, es ist die erste Szene (überprüfen Sie Is Initial View Controller).Auf dem storyboard, erstellen Sie einen neuen übergang aus Ihrem login-Klasse zu den ursprünglichen SplitViewController. Geben Sie eine Kennung, '
Load SplitViewController
' und eine custom segue Klasse Namen, die wir nennenFullyReplaceSegue
.In Ihrem login-Klasse .m-Datei, hinzufügen von code aufgerufen werden, sobald der Benutzer sich angemeldet hat:
Erstellen der neuen segue Klasse, basierend auf
UIStoryboardSegue
und nennen esFullyReplaceSegue
nach oben..h-Datei
.m-Datei
Hier ist, wie ich es Tat.
In didFinishLaunchingWithOptions:
Irgendwo sonst in den app delegate:
Dann in das storyboard, erstellen Sie einen übergang von der Ansicht, die zugewiesen bekommt als "rootController", um die gewünschten optionalen anzeigen, und geben Sie den neuen Wechsel der id
fileSegueID
. Es dauert etwas Debuggen, um sicherzustellen, dass dierootController
variable zugewiesen bekommt, um die richtige Ansicht.[[self window] makeKeyAndVisible];
ist das, was mir fehlte.Vielleicht ein wenig spät, aber ich war auf der Suche für die gleichen Vorschläge. Hier ist, was ich aufgewickelt tun.
Warum gehst du nicht laden, der Bildschirm, der sichtbar sein würde vorausgesetzt, die richtige und nicht abgelaufene Anmeldedaten (indem es als root view controller im Fenster) und dann in viewDidLoad des ersten view-controller, überprüfen Sie, ob eine Aktualisierung der Anmeldeinformationen erforderlich sind. Wenn ja, Wechsel in den login-view-controller.
Ja, es kann verwendet werden, wenn Sie einen Verweis auf die segue parent-view-controller. Sie können es bekommen wie diese:
Wird dies nur funktionieren, wenn der index in viewControllers array übereinstimmt, die der view-controller und wenn es existiert, natürlich. In diesem Fall ist die erste (in der array-und storyboard).
Den übergang ("LoginScreen"), müssen nicht befestigt werden, um eine Aktion. Die Art und Weise Sie dies zu tun ist, indem Sie die Ctrl-ziehen aus dem Datei-Besitzer-Symbol am unteren Rand des storyboard-Szene, um die Ziel-Szene. Ein popup erscheint, dass fragt nach einem option "Manueller Wechsel"; wählen Sie "Push -" als Typ. Tippen Sie auf das kleine Quadrat, und stellen Sie sicher, dass Sie im Attributes Inspector. Geben Sie einen Bezeichner, die Sie verwenden, um finden es in code.