2017-11-13 3 views
0

「アプリケーションはエージェントです」を「はい」に設定したウィンドウレスのアプリケーションです。メニュー項目をクリックして、私は次のようにします。NSWindowを終了しますが、NWしないでください

func createNewWindow(){ 
    mainWindow.center() 
    mainWindow.hidesOnDeactivate = true 
    mainWindow.isMovableByWindowBackground = true 
    mainWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 0, brightness: 1, alpha: 0.4) 
    mainWindow.contentViewController = searchView 
    mainWindow.makeKeyAndOrderFront(nil) 
    NSApp.activate(ignoringOtherApps: true) 
}

を、私は私の窓、私の窓の外や他のアプリにどのような方法シフトフォーカスにクリックした場合:そのアプリでは、私は「NSWindowのメインウィンドウを聞かせて」持っています閉じて、再び開くにはメニュー項目をクリックしなければなりません。今これが私の望むものなので、これは素晴らしいことです。しかし、私はビューコントローラ内で "self.view.window?.close()"を呼び出すと、そこに私のウィンドウを再び開くために私のメニュー項目をクリックした後、私はmainWindowにアクセスすると悪いアクセスを取得するので、何かを設定していると推測している私がそれを閉じるときにはゼロにする。

ウィンドウの外側をクリックしたときと同じ方法でウィンドウを閉じるにはどうすればよいですか?または、どうすれば不正なアクセスエラーを防ぐことができますか?

はあなた
セーレン

答えて

0

ない何か、ウィンドウを閉じるときnilに設定をお願いします。 documentation of close()

から

ウィンドウが閉じたときに解放されるように設定されている場合は、解放メッセージは、現在のイベントが終了した後、オブジェクトに送信 です。 オブジェクトの場合、デフォルトでは終了時に解放され、 の場合はNSPanelオブジェクトの場合、デフォルトは解放されません。 ​​プロパティを使用して、既定の動作を変更することができます。

動作を変更するか、ウィンドウを解放しないorderOut(_:)に電話してください。

関連する問題