Ich habe lange Objective-C-Antworten hier auf Stack-Overflow gesehen, aber keine schnellen Antworten.
Wie kann ich den initialen View-Controller programmgesteuert in swift von einem View-Controller aus ändern?
Ich würde denken, dass es so etwas gehen würde:
%Vor%Aber nein, das tut nichts. Die erste Zeile ist gut, aber die Funktionen der zweiten Zeile existieren nicht.
Um dies im View-Controller und nicht im App-Delegate zu tun: Holen Sie einfach den Verweis auf das AppDelegate in Ihrem View-Controller und setzen Sie sein Fensterobjekt mit dem rechten View-Controller als rootviewController. Schritt 1 : Machen Sie einige NSUserDefaults, die der Benutzer anpassen kann. Ein paar Knöpfe, einige Schalter in einer Tischansicht, etwas. Wenn der Benutzer dann auf die Schaltfläche klickt, ändern wir NSUserDefault. Haken Sie einige Tasten in einem Einstellungsansicht-Controller bis zu diesen Funktionen, und wir haben begonnen. Schritt 2 : Richten Sie Storyboard-IDs für alle Storyboards ein, die als Startansicht festgelegt werden sollen. Also für jeden View Controller, der ein initialer View Controller sein könnte: - Gehe in dein Storyboard. - Klicken Sie auf den View-Controller. - Klicken Sie in der rechten Seitenleiste auf das zeitungsähnliche Symbol, in dem Sie die Klasse steuern. - Aktivieren Sie im Abschnitt "Identität" (dritte Zeile) die Option "Storyboard-ID verwenden" (stellen Sie sicher, dass sie aktiviert ist) und geben Sie dann im Textfeld "Storyboard-ID" etwas wie "VC1" ein. Stellen Sie sicher, dass Sie für jeden Ansichtscontroller eine andere Storyboard-ID auswählen. -Wiederholen für jeden View-Controller. Schritt 3 : Richten Sie Ihren anfänglichen Ansichtscontroller in der AppDelegate.swift-Datei ein. Wechseln Sie in den Abschnitt Fügen Sie Folgendes hinzu, um von dem zuvor erstellten NSUserDefault zu lesen: Dies sucht nach einer NSUserDefault-Zeichenfolge mit dem Namen "LaunchView" (die Sie in Schritt 1 erstellt haben) und setzt sie auf die neue Variable launchview, wenn sie einen passenden NSUserDefault findet. Dann wollen wir in den Klammern Dann fügen wir innerhalb jeder dieser if-Anweisungen den folgenden Code hinzu: Dies öffnet das ausgewählte Fenster, wenn Ihre Anwendung geladen wird, nachdem sie eine Weile im Hintergrund war. Ihr fertiger Ich hoffe, dass dir das hilft, und vielen Dank an Ankit Goel, der mir so sehr geholfen hat. Lesen Sie die Kommentare unten für mehr. Eine letzte Anmerkung: Wenn Sie Switches in einer Einstellungsansicht verwenden, vergewissern Sie sich, dass Sie in der viewDidLoad des Einstellungsansicht-Controllers den NSUserDefault func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
Ihres App-Delegaten. if let launchview...
überprüfen, auf was Sie LaunchView
gesetzt haben. Für jedes Objekt, das Sie in Schritt 1 auf LaunchView setzen (im Beispiel habe ich "ViewController2"
und "ViewController1"
), müssen Sie hier nachsehen. Innerhalb dieser Klammern fügen wir Folgendes hinzu: didFinishLoadingWithOptions
-Abschnitt Ihres AppDelegates könnte etwa so aussehen:
(nicht nur kopieren und einfügen, lesen Sie die Anweisungen oben) LaunchView
gelesen haben, den der Benutzer zuletzt ausgewählt hat.
Zunächst können Sie den initialen View-Controller programmgesteuert für Ihre App in application:didFinishLaunchingWithOptions:
unter Verwendung des in der Frage angegebenen Codes setzen:
Sie können alle darin enthaltenen Bedingungen so verwalten, dass sie das eine oder andere UIViewController
in der Basis der Bedingungen anzeigen.
Nehmen wir zum Beispiel an, Sie möchten in Ihrer App eine Komplettlösung nur bei der ersten Installation der App anzeigen, danach einen anderen Anmeldebildschirm und dann einen weiteren, aber Sie zeigen nur den ersten Durchlauf und den Login für den Fall nicht vorher und der andere protokolliert werden.
Das kann natürlich auf verschiedene Arten gehandhabt werden, ich versuche nur, Ihnen eine der Möglichkeiten zu erklären, es zu machen.
Hier können Sie zum Beispiel einen Controller namens SplashViewController festlegen, der Ihre anfängliche UIViewController
darstellt und darin das Image der App (das große Image-Logo, Launch Screen) und Ihren Prozess zeigt Du gehst an den einen oder anderen Ort. Auf diese Weise säubern Sie den Code in Ihrem AppDelegate
und es ist leichter, einen Komponententest dafür durchzuführen.
Wenn Sie jetzt von einem anderen UIViewController
zu einem anderen UIViewController
wechseln möchten, können Sie den folgenden Code verwenden:
Ich hoffe, das hilft Ihnen.
Tags und Links ios swift storyboard