16

I need to create an modal dialog, which is to loaded from a nib file and should be displayed on a button click in the main window.

I can create a custom window in a nib file and load the custom dialog on button click, but it's not a modal dialog. I can switch back to the main window.

MyWindowController is the NSWindowController subclass. I used the code below to display my window in response to the button event:

MyWindowController *pController = [[MyWindowController alloc] 
                                   initWithWindowNibName:@"nibfilename"];
[MyWindowController showWindow:self];
Cœur
  • 37,241
  • 25
  • 195
  • 267
Pradeep Kumar
  • 420
  • 2
  • 5
  • 19

2 Answers2

17

There are several ways to do this — and in fact two different kinds of modal dialog in OS X: application-modal and window-modal. Using the wrong one will annoy people. One is a sheet, which is attached to the window that it affects (save dialogs are an example of this). The other is application-modal, which blocks the whole application (open dialogs work this way, since they don't apply to any window that exists yet). Apple's sheet documentation should help get you oriented.

Liviu
  • 1,859
  • 2
  • 22
  • 48
Chuck
  • 234,037
  • 30
  • 302
  • 389
11

Thank you...

(Example). Create a nib with name "About"

if(pAbtCtrl == nil)
        pAbtCtrl = [[AboutWindowController alloc] initWithWindowNibName:@"About"];

pAbtWindow = [pAbtCtrl window];

[NSApp runModalForWindow: pAbtWindow];

[NSApp endSheet: pAbtWindow];

[pAbtWindow orderOut: self];
Greg Sexton
  • 9,189
  • 7
  • 31
  • 37
Pradeep Kumar
  • 420
  • 2
  • 5
  • 19