ユーザーが NSWindowController の赤い閉じるボタンをクリックしたときにモーダルを停止したい。
NSWindowController には、「OK」と「キャンセル」ボタンがあります。
- (IBAction)okButtonClicked:(id)sender
{
[NSApp stopModalWithCode:NSOKButton];
[self.window close];
}
- (IBAction)cancelButtonClicked:(id)sender
{
[NSApp stopModalWithCode:NSCancelButton];
[self.window close];
}
赤い閉じるボタンをクリックすると、ウィンドウが閉じてモーダルが止まりません。windowWillClose:関数を見つけました。
- (void)windowWillClose:(NSNotification *)notification
{
if ([NSApp modalWindow] == self.window)
[NSApp stopModal];
}
でも、
if ([NSApp runModalForWindow:myWindowController.window] != NSOKButton)
return;
OKボタンをクリックしてもwindowWillClose:関数が呼び出され、runModalForWindow:関数は常にNSCancelButtonを返します。
モーダルの結果として、メンバー変数をmyWindowControllerに追加できます。
しかし、この問題を解決する別の一般的な方法があると思います。
楽な道を歩みたい。