2016-05-30 7 views
2

私はストーリーボードプロジェクトを開始しました。私はMenubarアイテムを入れました。 メニューバーの項目をクリックすると、AppDelegate.swiftで次のメソッドがトリガされます。activateIgnoringOtherAppsとmakeKeyAndOrderFrontがNSWindowが閉じた後に動作しない

func setWindowVisible() { 
    NSApp.activateIgnoringOtherApps(ture) 
    NSApp.mainWindow?.makeKeyAndOrderFront(self) 
} 

これは私のアプリを前面に持ち込む。しかし、一度閉じるボタンをクリックすると、ウィンドウ上の赤色のボタンは動作しません。

これは、私がウィンドウを閉じても、ストーリーボードではないプロジェクトで使用されていました。

私は誰も私を助けてくださいことができます)(applicationDidFinishLaunchingに

NSApp.mainWindow?.releasedWhenClosed = false 

を設定していますか?

答えて

3

設定releasedWhenClosedapplicationDidFinishLaunchingに設定しても、現時点ではmainWindowのプロパティはnilではありません。 →このメソッドの実行後にウィンドウが作成されます。

Interface Builderでウィンドウを作成すると、releasedWhenClosedはデフォルトでfalseに設定されます。

mainWindowプロパティは、もはやmainWindowが存在しないため、ウィンドウを閉じた後はおそらくnilです。ドキュメントから:

このプロパティの値は、アプリのストーリーボードまたはnibファイルの読み込みがまだ完了していない場合はnilです。アプリが非アクティブであるか非表示になっている場合は、これもゼロになることがあります。

私はNSAppwindowsアレイ内からウィンドウにアクセスして(決算後)、再びウィンドウを表示することができました。場合

NSApp.activateIgnoringOtherApps(true) 
NSApp.windows[0].makeKeyAndOrderFront(self) 

は、あなたは、アレイ内の右1 ..まだ

+0

運を見つける必要があり、複数のウィンドウを持っています。 xcodeテンプレートが提供する1つのウィンドウがあります –

+0

Windows配列を印刷できますか? – mangerlahn

+0

私はちょうど解決しました。 varウィンドウ:NSWindow!このプロパティでは、window = NSApp.mainWindow! applicationDidBecomeActive()では、自分のメソッド内でself.window.makeKeyAndOrderFront(self)を呼び出します。 –

関連する問題