我有一个窗口(带有控制器),应该阻止所有其他窗口。 出于这个原因,我想使用[NSApp runModalForWindow ..]显示窗口。
问题是谁负责调用此方法:
答案 0 :(得分:1)
在我的应用程序中,我有一个实现NSApplicationDelegate协议的类 - 如果你刚刚开始一个简单的项目你会得到什么。该对象具有控件和诸如此类的视图,其中一些控件可以启动对话框。因此,在我需要将应用程序模式对话框显示为对控件的响应的情况下,在该控件的处理程序中(在我的NSApplicationDelegate对象中),我调用runModalForWindow。假设我有一个派生自NSWindowController的类,名为MyDialog,带有一个对象MyDialog * theDialog。这个电话看起来像是:
NSResult result= [NSApp runModalForWindow:[theDialog window]];
显示对象的责任是调用abortModal,stopModal或stopModalWithCode。因此,在MyDialog类中,我可能有一个“OK”按钮的处理程序和一个“取消”按钮的处理程序:
-(void) onOk:(id)sender
{
[NSApp stopModal]; // Returns NSRunStoppedResponse.
[[self window] performClose:self];
}
-(void) onCancel:(id)sender
{
[NSApp abortModal]; // Returns NSRunAbortedResponse.
[[self window] performClose:self];
}