Ok, this is really stumping me:
I create a modal sheet on a window as
-(IBAction) login: (id) sender {
[NSApp beginSheet:loginWindow
modalForWindow:window
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
}
and try to remove it with
-(IBAction) loginWindowCancelPressed: (id) sender {
debugLog(@"cancel");
[NSApp endSheet:loginWindow];
}
but it remains.
I've checked all of the obvious things like IB connections and ensuring that window and loginWindow are present and in the normal state.
So, the question is: Am I missing something?
You have to set up a delegate for the sheet. The delegate should implement a method with a signature like the following:
- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;
(You can use a different name if you like, but it should accept the same parameters.)
You can do whatever you need to do in that method, but ultimately it should end with:
[sheet orderOut:self];
which will dismiss the sheet.
See: Creating a Modal Dialog or Window in Cocoa Objective-c?
A delegate is not required. The following works for me to dismiss and allows calling it back later:
[NSApp endSheet: loginWindow];
[loginWindow orderOut:self];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With