Sheets

A sheet is a modal dialog that’s attached to a particular window—usually a document—and prevents further interaction with the window until the sheet is dismissed. When displayed, a sheet animates into view as if emerging from the window’s frame above the body area. Because a sheet is attached to a specific window, the user can always correlate the sheet with its parent window. In the case of a tabbed window, a sheet pertains to the active tab and the user can’t switch to another tab without first dismissing the sheet.

A sheet is a good way to request user input in order to proceed with a document-specific action, such as attaching files, exporting, saving, and printing. Sheets are also sometimes used to present information to the user before proceeding, like a licensing agreement that requires acceptance.

Use a sheet only when a window has a frame. Sheets should always emerge from a window’s frame above the body area.

Open sheets above other windows. In general, a window and its attached sheet should come to the front when the sheet opens. Once a sheet is displayed, the user should be able to click another window to bring it back to the front. Note that, when a document comes to the front, any modeless document-related panels should come to the front too.

Whenever possible, avoid displaying more than one sheet attached to a window at a time. If a user action within a sheet results in another sheet being displayed, consider closing the first sheet before displaying the new one. If necessary, you can display the first sheet again after the second one is dismissed.

Use an app-modal dialog instead of a sheet when the same document is opened in multiple windows. Some apps let the user open a document in multiple windows so they can view and edit different portions of the document at once. In this situation, it would be unclear that changes made in a single sheet affect all open document windows.

Use a panel instead of a sheet if the user needs to see or interact with the window in order to address the dialog. If the dialog requests information the user must get from the window, the dialog should not be a sheet. A panel is a better choice because it’s modeless and lets the user continue navigating the document to gather information. See Panels.

Use a panel instead of a sheet if the user needs to repeatedly provide input and observe results. A find and replace panel, for example, might let the user initiate replacements individually, so the result of each can be observed for correctness.

For related guidance, see Dialogs and Window Anatomy. For developer guidance, see the beginSheet method of NSWindow.