2012-02-15 94 views
0

我正在运行一个警报对话框作为工作表。问题是,我只想在工作表得到答案时继续执行程序。所以我加了默认模式的代码来自苹果:模态板和模态返回值

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow]; 
for (;;) 
    if ([NSApp runModalSession:session] != NSRunContinuesResponse) 
     break; 
[NSApp endModalSession:session]; 

这使我的代码很干净,但有一个问题:如果我这样做,板材不会在菜单栏的前面拿到了(我是使用NSStatusWindowLevel来获得该效果)。

有没有人为此提供解决方案?我想避免did-end-selectors,因为他们使代码非常混乱。谢谢!

回答

3

我有同样的问题,发现我需要在会话循环中设置窗口级别以使其工作。在你的情况是这样的:

NSModalSession session = [NSApp beginModalSessionForWindow:aWindow]; 
for (;;) { 
    [mySheet setLevel: NSStatusWindowLevel]; 
    if ([NSApp runModalSession:session] != NSRunContinuesResponse) 
    break; 
} 
[NSApp endModalSession:session];