Используя пользовательские листы

Один тип листа является предупредительным листом, обсужденным в Использовании Предупредительных Листов. Если тип информации, представленной в предупредительных листах, не подходит для Вашего приложения, можно создать и представить пользовательский лист.

При работе с пользовательскими листами Вы ответственны за отображение, а также отклонение листа. Вы выводите на экран лист с beginSheet:... метод, и Вы заканчиваете лист endSheet: метод. Между этими двумя методами Ваш лист работает модально.

Вы создаете своего пользовательского Разработчика Интерфейса использования листа. Важно не забыть включать кнопку, чтобы позволить пользователю отклонять лист, когда они закончены с ним.

Это обсуждение предполагает, что лист находится в отдельном вызванном файле пера MyCustomSheet. Кнопка Close определяется на листе. Кнопка Close установлена выполнить closeCustomSheet: метод, когда щелкнувшийся.

showCustomSheet: метод выводит на экран пользовательский лист, модальный к окну, переданному в качестве параметра. Параметры beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo: подобны тем для NSBeginAlertSheet функция, но кнопка Close на пользовательских средствах управления листом, отклоняя лист. Селектор-конца указан для обработки любого действия, необходимого прежде, чем отклонить лист.

Перечисление 1  , Выводящее на экран пользовательский лист

- (void)showCustomSheet: (NSWindow *)window
 
// User has asked to see the custom display. Display it.
{
    if (!myCustomSheet)
//Check the myCustomSheet instance variable to make sure the custom sheet does not already exist.
        [NSBundle loadNibNamed: @"MyCustomSheet" owner: self];
 
    [NSApp beginSheet: myCustomSheet
            modalForWindow: window
            modalDelegate: self
            didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
            contextInfo: nil];
 
    // Sheet is up here.
    // Return processing to the event loop
}

Когда пользователь нажимает кнопку Close, следующий метод выполняется (это было указано в файле пера при создании листа).

Перечисление 2  , Закрывающее пользовательский лист

- (IBAction)closeMyCustomSheet: (id)sender
{
    [NSApp endSheet:myCustomSheet];
}

Управление отправляется в селектор-конца, очищающий путем закрытия пользовательского листа. Важно вызвать orderOut: по окончании с Вашим листом, или это не удалено из экрана.

  Селектор-Конца перечисления 3

- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
    [sheet orderOut:self];
}