2017-12-13 10 views
-1

私は2つのウィンドウを持っています。最初のウィンドウで、私は、次のコードと第二のいずれかを作成する:ウィンドウコントローラーを閉じるウィンドウを完全に削除しない

self.toolsWindowController = ToolsWindowController() 

ToolsWindowController私はペン先からロード簡単ウィンドウである:

class ToolsWindowController: NSWindowController { 
    override var windowNibName : NSNib.Name! { 
     return NSNib.Name(rawValue: "ToolsWindow") 
    } 
} 

そして最初のウィンドウでIはToolWindow閉じ:

toolsWindowController?.close() 

ウィンドウがまだ存在します。再開後、ウィンドウ数が増加しました。

print(NSApplication.shared.windows.count) 

enter image description here

私はそれを助けていない、このオプションを試してみました。ウィンドウをメモリから完全に削除する方法

+0

の仕事は、あなたは何を意味するか、 "まだ存在して" いますか?画面に表示されていますか? 'toolsWindowController'が' nil'になると思いますか? (それはあなた自身で行う必要はありません) – ctietze

+0

@ctietze NSApplication.shared.windows'リストのウィンドウを閉じた後。私はそれを完全に取り除きたい。 – Arti

+0

変数= nilを設定しようとしましたが、助けにならなかった – Arti

答えて

-2

を作製するための溶液がdeinitの方法で見つかった。また私の場合、オーバーレイウィンドウオブジェクトを作成するwindow.styleMask.insert(.fullScreen)フルスクリーンファイルマスクがあります。あなたもそれを削除する必要があります。

class ToolsWindowController: NSWindowController { 
    override var windowNibName : NSNib.Name! { 
     return NSNib.Name(rawValue: "ToolsWindow") 
    } 

    deinit { 
     NotificationCenter.default.removeObserver(self) 
     self.window?.styleMask.remove(.fullScreen) 
     self.window = nil 
    } 
} 

そしてself.toolsWindowController=nil

関連する問題