Если у вас есть диалог, который применяется к конкретному окну, то вам, вероятно, следует использовать не модальное диалоговое окно, а лист. По возможности следует избегать модальных диалогов. Если вы используете лист, проблема, с которой вы столкнулись, больше не будет проблемой.
- (void)showSheet:(id)sender
{
[NSApp beginSheet:yourModalWindow
modalForWindow:windowThatSheetIsAttachedTo
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:nil];
}
- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
[sheet orderOut:self];
[NSApp endSheet:sheet];
}