swift 3.0.1 を使用して、maxOS 10.11.6 の Xocode 8.0 でドキュメント ベースの Cocoa プロジェクトを作成しました。mainMenu.xib、document.xib を削除し、infolist を変更してから、独自の main 関数を追加しました。私は Interface Builder をまったく使用していないためです。
Document.swift で、windowNibFille 変数を削除し、makeWindowController() 関数をオーバーライドします。
override func makeWindowControllers() {
let mainWindow = NSWindow(contentRect: NSMakeRect(0, 0, NSScreen.main()!.frame.width/2, NSScreen.main()!.frame.height/2), styleMask: [NSTitledWindowMask, NSResizableWindowMask, NSMiniaturizableWindowMask, NSClosableWindowMask], backing: NSBackingStoreType.buffered, defer: false)
mainWindow.isOpaque = false
mainWindow.center()
mainWindow.isMovableByWindowBackground = true
mainWindow.makeKeyAndOrderFront(nil)
let mainWindowController = NSWindowController(window: mainWindow)
addWindowController(mainWindowController)
}
私は他に何もしませんでした。プロジェクトをビルドすると、コンパイルされたアプリを実行するメニュー、ウィンドウ、ドキュメントを取得できません。これは、NSDocumentController インスタンス、NSDocuement、NSWindow インスタンスをインスタンス化していないためです。
しかし、彼の現実は、私がプロジェクトを実行したということです。無題という名前のウィンドウが表示されます。これは厄介です。ほとんど空のプロジェクトに目に見えないコードが存在するようです。無題のドキュメントが開かれる前に何かをしたいのですが、NSDocumentController インスタンスが自分の制御外で作成された場合、どのようにすればよいですか?