as @OS X-Storyboard ruft viewDidLoad auf, bevor applicationDidFinishLaunching @ ausgeführt wir

Ich habe eine Mac OS X-Anwendung in Xcode mithilfe von Storyboards erstellt. Aus irgendeinem Grund ist dasapplicationDidFinishLaunching -Methode im AppDelegate wird aufgerufen nachviewDidLoad in den NSViewControllern. Wie bei iOS-Apps dachte ichviewDidLoad soll vor @ aufgerufen werdapplicationDidFinishLaunching? Initialisieren Storyboards in OS X-Apps die View-Controller, bevor die App gestartet wurde?

Ich benutze dasapplicationDidFinishLaunching -Methode zum Registrieren von Standardeinstellungen in NSUserDefaults. Die Registrierung der Standardwerte findet leider statt, nachdem die Ansichten im Storyboard geladen wurden. Daher, wenn ich die Ansicht in jedem Ansichtscontroller mit @ einrichtviewDidLoad, die Standarddaten in NSUserDefaults wurden nicht festgelegt. Wenn ich @ nicht benutzen kaapplicationDidFinishLaunching, um NSUserDefaults in OS X-Storyboard-Apps zu registrieren, dann wie ich die Standardeinstellungen vor @ festgelegt haviewDidLoad wird genannt

Um dieses Problem zu beheben, klicken Sie imMain.storyboard In Xcode habe ich "Is Initial Controller" für das Hauptfenster deaktiviert. Ich habe dem Hauptfenster eine Storyboard-ID als "MainWindow" zugewiesen. Dann habe ich im AppDelegate folgenden Code eingegeben:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(aNotification: NSNotification) {

        let storyboard = NSStoryboard(name: "Main", bundle: nil)
        let mainWindow = storyboard.instantiateControllerWithIdentifier("MainWindow") as! NSWindowController
        mainWindow.showWindow(nil)
        mainWindow.window?.makeKeyAndOrderFront(nil)

    }
}

Die App stürzt nicht ab, aber jetzt wird das Fenster nie angezeigt. Das folgende Bild zeigt das Storyboard, mit dem ich arbeite:

Antworten auf die Frage(8)

Ihre Antwort auf die Frage