<!--
{
  "availability" : [
    "macCatalyst: -",
    "macOS: 10.0.0 - 10.6.0"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSSavePanel/beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSSavePanel(im)beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:"
  },
  "title" : "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:"
}
-->

# beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:

Presents a Save panel as a sheet with a specified path and, optionally, a specified file in that path.

```
- (void) beginSheetForDirectory:(NSString *) path file:(NSString *) name modalForWindow:(NSWindow *) docWindow modalDelegate:(id) delegate didEndSelector:(SEL) didEndSelector contextInfo:(void *) contextInfo;
```

## Parameters

`path`

Directory whose files the panel displays. When `nil`, the directory is the same directory used in the previous invocation of the panel; this is probably the best choice for most situations.

`name`

Specifies a particular file in `path` that is selected when the Save panel is presented to a user. When `nil`, no file is initially selected.

`docWindow`

If not `nil`, the Save panel slides down as a sheet running as a document modal window in `docWindow`. If `nil`, the behavior defaults to a standalone modal window.

`delegate`

This is not the same as a delegate assigned to the panel. This delegate is temporary and the relationship only lasts until the panel is dismissed. The `NSSavePanel` object has a weak reference to the modal delegate.

`didEndSelector`

Message sent to `modalDelegate` after the modal session has ended, but before dismissing the Save panel. `didEndSelector` may dismiss the Save panel itself; otherwise, it is dismissed on return from the method. The corresponding method should have the following signature:

```objc
- (void)savePanelDidEnd:(NSSavePanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo;
```

    The value passed as     `returnCode`     is either     `NSCancelButton`     or     `NSOKButton`    .

`contextInfo`

Context information passed to `modalDelegate` in the `didEndSelector` message.

## See Also

[`func beginSheetModal(for: NSWindow, completionHandler: (NSApplication.ModalResponse) -> Void)`](/documentation/AppKit/NSSavePanel/beginSheetModal(for:completionHandler:))

Presents the panel as a sheet modal to the specified window.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)