O storyboard do OS X chama viewDidLoad antes do applicationDidFinishLaunching
Criei um aplicativo Mac OS X no Xcode usando storyboards. Por alguma razão, oapplicationDidFinishLaunching
O método no AppDelegate está sendo chamado apósviewDidLoad
nos NSViewControllers. Assim como nos aplicativos para iOS, penseiviewDidLoad
deve ser chamado antesapplicationDidFinishLaunching
? Os storyboards nos aplicativos OS X inicializam os controladores de exibição antes que o aplicativo seja iniciado?
Estou usando oapplicationDidFinishLaunching
para registrar as configurações padrão nos NSUserDefaults. Infelizmente, o registro dos valores padrão está acontecendo após o carregamento das visualizações no storyboard. Portanto, quando eu configuro a visualização em cada controlador de visualização usandoviewDidLoad
, os dados padrão no NSUserDefaults não foram definidos. Se eu não posso usarapplicationDidFinishLaunching
registrar NSUserDefaults nos aplicativos de storyboard do OS X, então como eu defino os padrões antesviewDidLoad
é chamado?
Para corrigir esse problema, noMain.storyboard
no Xcode, desativei "Is Initial Controller" na janela principal. Atribuí um ID do storyboard à janela principal como "MainWindow". Em seguida, no AppDelegate, digitei o seguinte código:
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)
}
}
O aplicativo não falha, mas agora a janela nunca aparece. A imagem a seguir mostra o storyboard com o qual estou trabalhando: