О листах
Лист является просто диалоговым окном, присоединенным к определенному окну, гарантируя, что пользователь никогда не теряет след, которого окна диалоговое окно принадлежит. Возможность сохранить диалоговое окно присоединенным к его подходящему окну позволяет пользователям в полной мере воспользоваться моделью разделения на уровни окна OS X и также мотивирует немодальность; в то время как лист открыт, пользователи могут работать над другими документами или в других приложениях.
Лист является модальным документом — это - то, в то время как это открыто, пользователю препятствуют делать что-либо еще в окне или документе, пока не отклонено диалоговое окно. Напротив, диалоговое окно, которое является модальным приложением, препятствует тому, чтобы пользователь делал что-либо еще в приложении.
Если родительское окно является более узким, чем лист или около края экрана, является предоставленным «бесплатно» Какао, при управлении анимацией листов и проверке лист появляется должным образом.
Какао обеспечивает API для представления листов. Поскольку листы являются модальным документом, эти вызовы сразу возвращаются после представления листа. Когда пользователь отклоняет лист, методы обратного вызова используются для уведомления приложения.
Когда использовать листы
Используйте листы для диалоговых окон, определенных для документа, когда пользователь будет взаимодействовать с диалоговым окном и будет отклонять его перед продолжением работы. Некоторые примеры того, когда использовать листы:
Модальное диалоговое окно, которое является определенным для определенного документа, таким как сохранение или печать. Классы Какао NSSavePanel и NSPrintPanel представляют свои представления как листы.
Модальное диалоговое окно, которое является определенным для приложения единственного окна, не создающего документы. Утилита единственного окна могла бы использовать лист для запроса принятия соглашения о лицензировании от пользователя, например.
Другие специфичные для окна диалоговые окна, обычно отклоненные пользователем перед продолжением. Используйте лист, когда диалоговое окно получает преимущества от того, чтобы быть присоединенного к окну как модальное диалоговое окно, даже если Вы могли бы иначе разработать диалоговое окно как немодальное диалоговое окно.
Листы и делегация
Поскольку листы в Какао являются модальным документом при отображении листа нормальная реализация программы продолжается, позволяя пользователю сделать другие вещи в других окнах. Это означает, что Ваше приложение должно быть подготовлено обработать взаимодействие с пользователем, когда это происходит.
Когда пользователь отклоняет лист, а также получатель этих сообщений, известных как модальный делегат, при отображении листа Вы указываете селекторы для методов обратного вызова, отправленных. Модальному делегату сообщают о кнопке пользователь, по которому щелкают в качестве параметра в методе, который она получает.
В отличие от других делегатов в Какао, модальные делегаты в листах являются временными, и отношение длится только, пока лист не отклонен. Модальный делегат листа не сохраняется никаким модальным документом методом или функцией.
Работа с листами
Листы размечаются как любое другое диалоговое окно в OS X. Вы ответственны за загрузку, показ и закрытие листов. В то время как лист выведен на экран, события обрабатываются Набором Приложения так же, как для любого другого окна. Другое поведение листа, такое как анимация, когда это появляется и отклонено, обрабатывается автоматически Набором Приложения.
Каждая функция листа берет в качестве параметра модального делегата и один или несколько методов обратного вызова. Все вызовы указывают метод обратного вызова, отправляющийся прежде, чем отклонить лист, иногда называемый селектором-конца. Некоторые функции листа также допускают второй метод обратного вызова, отправляющийся после отклонения листа, известный как - отклоняют селектор. При отображении листа, можно дополнительно включать параметр информации контекста. Когда лист заканчивается, модальный делегат отправляется селектор-конца, получая как параметры объект окна листа, результат выполнения листа (или булево значение или код возврата), и параметр информации контекста. информация контекста является способом для Вас передать информацию от запуска модального сеанса до конца, и эта информация может быть тем, чего Вы желаете: простое значение, структура или объект.
Селектор-конца отправляется прежде, чем отклонить лист, если Вы возможность отклонить лист и родительское окно документа одновременно. Например, Вы могли бы хотеть сделать это, когда отклонение “делает Вы хотите сохранить” предупреждение прежде, чем закрыть окно. Если пользователь нажимает Do not Save, Вы хотите закрыть и окно документа и лист без эффекта листа. Это может быть выполнено путем вызова [documentWindow close]
от селектора-конца. Можно также отклонить просто лист в этом методе путем вызова [sheet orderOut: self]
. Если Вы не отклоните лист, то он будет сделан для Вас по возврату из селектора-конца. Можно быть в ситуации, однако, где Вы хотите сразу представить другой лист, и это лучше всего сделано от селектора-конца после отклонения первого листа.
Можно найти, что это удобный для реализации и селектора-конца и - отклоняет селектор, но это не требуется.