我们经常能够看到OS X中不少应用程序使用了Sheet形式的窗口,看起来是个对话框,但是弹出的效果是动画形式从上到下的。我们如何在自己的程序中使用这种Sheet窗口呢?

 

要在窗口中显示一个sheet(就是从上面飘下来那种窗口效果),使用NSApplication将其启动:

 
[NSApp beginSheet: saveSheet
   modalForWindow: window
            modalDelegate: self
   didEndSelector: @selector(saveSheetDidEnd:returnCode:contextInfo:)
             contextInfo: NULL];
 
在窗口的控件里使用
 
 [NSApp endSheet: saveSheet returnCode: NSOKButton];
 
如果要调用didEndSelector,在以上方法中你可以检查返回值,而决定如何操作。
 
- (void) saveSheetDidEnd: (NSWindow *) sheet
              returnCode: (int) returnCode
             contextInfo: (void *) contextInfo
{
    if (returnCode == NSOKButton) {
        // …
    } else if (returnCode == NSCancelButton) {
        // …
    } else {
        // …
    }
           
    [sheet close];
           
}