Используя пользовательские листы
Один тип листа является предупредительным листом, обсужденным в Использовании Предупредительных Листов. Если тип информации, представленной в предупредительных листах, не подходит для Вашего приложения, можно создать и представить пользовательский лист.
При работе с пользовательскими листами Вы ответственны за отображение, а также отклонение листа. Вы выводите на экран лист с 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]; |
} |