I’m updating an old project which used the -[NSApp beginSheet:::::] methods to
use -[NSWindow beginSheet:completionHandler:]. In so doing, I now need the
parent window in my action methods, so I can send the -[NSWindow endSheet::]
message which runs the completion handler. In many cases, the sheet is handy
but the parent window is not. No problem, I thought, just use send -[NSWindow
parentWindow] to the sheet.
Unfortunately this always returns nil, unless I set is using -[NSWindow
setParentWindow:] beforehand, which the documentation and common sense says is
unnecessary.
Is the non-functioning of -[NSWindow parentWindow] a known bug, or am I doing
something wrong?
I have reproduced the problem in a demo project which and put it on github.com
(links below). Here is the code:
@interface AppDelegate ()
@property (weak) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSWindow *sheet;
@end
@implementation AppDelegate
- (IBAction)showSheet:(id)sender {
[self.window beginSheet:self.sheet
completionHandler:^void(
NSModalResponse modalResponse) {
NSLog(@"Got response: %ld", modalResponse) ;
}] ;
}
- (IBAction)done:(id)sender {
NSWindow* parentWindow = [self.sheet parentWindow] ;
if (!parentWindow) {
NSLog(@"Nil parentWindow! Workaround being used") ;
parentWindow = self.window ;
}
[parentWindow endSheet:self.sheet
returnCode:123] ;
}
@end
Project: https://github.com/jerrykrinock/SheetDemo
Clone: https://github.com/jerrykrinock/SheetDemo.git
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]