在Cocoa Objective-C中创建模态对话框或窗口?

时间:2009-12-14 18:28:40

标签: objective-c

我需要创建一个模态对话框,该对话框是从nib文件加载的,应该在主窗口中单击按钮时显示。

我可以在nib文件中创建自定义窗口并在按钮单击时加载自定义对话框,但它不是模态对话框。我可以切换回主窗口。

MyWindowControllerNSWindowController子类。 我使用下面的代码显示我的窗口以响应按钮事件:

MyWindowController *pController = [[MyWindowController alloc] 
                                   initWithWindowNibName:@"nibfilename"];
[MyWindowController showWindow:self];

2 个答案:

答案 0 :(得分:17)

有几种方法可以做到这一点 - 实际上OS X中有两种不同的模态对话框:应用模式和窗口模态。使用错误的人会惹恼别人。一个是工作表,它附加到它影响的窗口(保存对话框就是一个例子)。另一个是应用程序模式,它阻止整个应用程序(打开对话框以这种方式工作,因为它们不适用于任何存在的窗口)。 Apple的sheet documentation应该可以帮助您定位。

答案 1 :(得分:11)

谢谢...

(实施例)。 创建一个名为“关于”的笔尖

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

pAbtWindow = [pAbtCtrl window];

[NSApp runModalForWindow: pAbtWindow];

[NSApp endSheet: pAbtWindow];

[pAbtWindow orderOut: self];