macoscocoanswindownsopenpanelcocoa-sheet

Show NSWindow as a toolbar sheet


How do you show a NSWindow from the toolbar, like the NSOpenPanel in the picture below?

enter image description here


Solution

  • Uncheck Visible At Launch from the window properties in the NIB file and then use beginSheet:

    [NSApp beginSheet:sheetWindow
               modalForWindow:mainWindow
               modalDelegate:self
               didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
               contextInfo:NULL];
    

    Additionally, NSSavePanel provides beginSheetModalForWindow as a convenience method:

    [savePanel beginSheetModalForWindow:mainWindow completionHandler:^(NSInteger result) {
        if (result != NSFileHandlingPanelOKButton) return;
        // Do something
    }];