NSWindowController
NSWindowController объект управляет окном, обычно окном, сохраненным в файле пера.
Это управление влечет за собой:
Загрузка и отображение окна
Закрытие окна в надлежащих случаях
Настройка заголовка окна
Хранение кадра окна (размер и расположение) в базе данных значений по умолчанию
Расположение каскадом окна в связи с другими окнами документа приложения
Контроллер окна может управлять окном отдельно или как ролевым игроком в также включающей основанной на документе архитектуре Набора Приложения, NSDocument и NSDocumentController объекты. В этой архитектуре контроллер окна создается и управляется «документом» (экземпляр NSDocument подкласс), и, в свою очередь, сохраняет ссылку на документ.
Отношение между контроллером окна и файлом пера важно. Несмотря на то, что контроллер окна может управлять программно создаваемым окном, он обычно управляет окном в файле пера. Файл пера может содержать другие объекты верхнего уровня, включая другие окна, но ответственность контроллера окна является этим главным окном. Контроллер окна обычно является владельцем файла пера, даже когда это - часть основанного на документе приложения. Независимо от того, кто владелец файла, контроллер окна ответственен за освобождение всех объектов верхнего уровня в файле пера, который это загружает.
Для простых документов — т.е. документов только с одним файлом пера, содержащим окно — Вы должны сделать мало непосредственно с NSWindowController. Набор Приложения создаст один для Вас. Однако, если контроллер окна по умолчанию не достаточен, можно создать пользовательский подкласс NSWindowController. Для документов с многократными окнами или панелями, Ваш документ должен создать отдельные экземпляры NSWindowController (или пользовательских подклассов NSWindowController), один для каждого окна или панели. Примером является приложение CAD, имеющее различные окна для стороны, вершины и видов спереди рисованных объектов. Что Вы выполняете в Вашем NSDocument подкласс определяет ли значение по умолчанию NSWindowController или отдельно создаваемый и сконфигурированный NSWindowController объекты используются.
Разделение на подклассы NSWindowController
Необходимо создать подкласс NSWindowController когда Вы хотите увеличить поведение по умолчанию, например, дать окну пользовательский заголовок или выполнить некоторые задачи установки, прежде чем будет загружено окно. В методе инициализации Вашего класса, убедиться вызвать на super любой initWithWindowNibName:... инициализаторы или initWithWindow: инициализатор. Какой зависит от того, происходит ли объект окна в файле пера или программно создается.
Три NSWindowController методы обычно переопределяются:
Имя метода |
Описание |
|---|---|
Переопределение для выполнения задач перед файлом пера окна загружается. |
|
Переопределение для выполнения задач после файла пера окна загружается. |
|
Переопределение для настройки заголовка окна. |
Можно также переопределить loadWindow получить различное ищущее перо или загружающее перо поведение, несмотря на то, что обычно нет никакой потребности сделать это.
Наследование
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSObjectProtocol -
NSSeguePerforming -
Печатаемый -
NSCoding -
NSObject -
NSSeguePerforming
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.0 и позже.
-
init (окно:) - initWithWindow:Определяемый инициализаторВозвращает контроллер окна, инициализированный с данным окном.
Объявление
Swift
init(windowwindow: NSWindow?)Objective C
- (instancetype)initWithWindow:(NSWindow *)windowПараметры
windowОбъект окна для управления; может быть
nil.Возвращаемое значение
Недавно инициализированный контроллер окна.
Обсуждение
Этот метод является определяемым инициализатором для
NSWindowController.Этот инициализатор полезен, когда окно было загружено, но не присваивается никакой контроллер окна. Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocumentфлаг кNOfalse, и определяет имя автосохранения рамки окна к пустой строке. Как побочный эффект, создаваемый контроллер окна добавляется как наблюдательNSWindowWillCloseNotifications отправленный тем объектом окна (который обрабатывается закрытым методом). При создании контроллера окна делегатом окна можно реализовать NSWindow’swindowShouldClose:метод делегата.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает контроллер окна, инициализированный с файлом пера.
Объявление
Swift
convenience init(windowNibNamewindowNibName: String)Objective C
- (instancetype)initWithWindowNibName:(NSString *)windowNibNameПараметры
windowNibNameИмя файла пера (минус “
.nib” расширение), который архивирует окно получателя; не может бытьnil.Обсуждение
Устанавливает владельца файла пера к получателю. Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocumentфлаг кNOfalse, и определяет имя автосохранения для кадра окна к пустой строке.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает контроллер окна, инициализированный с файлом пера и указанным владельцем для того файла пера.
Объявление
Swift
convenience init(windowNibNamewindowNibName: String, ownerowner: AnyObject)Objective C
- (instancetype)initWithWindowNibName:(NSString *)windowNibNameowner:(id)ownerПараметры
windowNibNameИмя файла пера (минус “
.nib” расширение), который архивирует окно получателя; не может бытьnil.ownerВладелец файла пера; не может быть
nil.Обсуждение
Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocumentфлаг кNOfalse, и определяет имя автосохранения для кадра окна к пустой строке.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает контроллер окна, инициализированный с файлом пера в абсолютном пути и указанном владельце.
Объявление
Swift
convenience init(windowNibPathwindowNibPath: String, ownerowner: AnyObject)Objective C
- (instancetype)initWithWindowNibPath:(NSString *)windowNibPathowner:(id)ownerПараметры
windowNibPathПолный путь к файлу пера, архивирующему окно получателя; не может быть
nil.ownerВладелец файла пера; не может быть
nil.Обсуждение
Используйте этот метод, если Ваш файл пера в фиксированном расположении (который не является или в пакете класса владельца файла или в основном пакете приложения). Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocumentфлаг кNOfalse, и определяет имя автосохранения для кадра окна к пустой строке.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Загружает окно получателя из файла пера.
Объявление
Swift
func loadWindow()Objective C
- (void)loadWindowОбсуждение
Вы никогда не должны непосредственно вызывать этот метод. Вместо этого вызовите
windowтакwindowDidLoadиwindowWillLoadметоды вызываются. Подклассы могут переопределить этот метод, если путь он находит и загружается, окно не соответствует. Это использует NSBundle’sbundleForClass:метод для получения пакета, с помощью класса владельца файла пера как параметр. Это тогда определяет местоположение файла пера в пакете и, в случае успеха, загружает его; если неуспешный, это пытается найти файл пера в основном пакете.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Выводит на экран окно, связанное с получателем.
Объявление
Swift
@IBAction func showWindow(_sender: AnyObject?)Objective C
- (IBAction)showWindow:(id)senderПараметры
senderУправление, отправляющее сообщение; может быть ноль.
Обсуждение
Если окно
NSPanelвозразите и имеетbecomesKeyOnlyIfNeededотметьте набор кYEStrue, окно выведено на экран перед всеми другими окнами, но не сделано ключевым; иначе это выведено на экран впереди и сделано ключевым. Этот метод полезен для действий меню.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
– makeKeyAndOrderFront:(NSWindow)– orderFront:(NSWindow) -
isWindowLoaded - isWindowLoadedДоступный в OS X v10.0 через OS X v10.9Возвраты, был ли загружен файл пера, содержащий окно получателя.
Объявление
Objective C
- (BOOL)isWindowLoadedВозвращаемое значение
YEStrueесли файл пера, содержащий окно получателя, был загружен,NOfalseиначе.Оператор импорта
Objective C
@import AppKit;Доступность
Доступный в OS X v10.0 через OS X v10.9.
-
Возвращает окно, принадлежавшее получателю.
Возвращаемое значение
Окно, принадлежавшее получателю или
nilесли нет того.Обсуждение
Если окно еще не было загружено, этот метод пытается загрузить использование файла пера окна
loadWindow. Прежде чем это загрузит окно, это вызываетwindowWillLoad, и если контроллер окна имеет документ, он вызывает соответствующий метод документаwindowControllerWillLoadNib:(если реализовано). После загрузки окна этот метод вызываетwindowDidLoadи, если существует документ, метод NSDocumentwindowControllerDidLoadNib:(если реализовано).Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
– windowControllerWillLoadNib:(NSDocument) -
Устанавливает окно контроллера окна.
Параметры
aWindowНовое окно.
Обсуждение
Этот метод выпускает старое окно и любые связанные объекты верхнего уровня в его файле пера и предполагает владение нового окна. Необходимо обычно создавать новый контроллер окна для нового окна и выпускать старый контроллер окна вместо того, чтобы использовать этот метод.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Отправленный после того, как окно, принадлежавшее получателю, было загружено.
Объявление
Swift
func windowDidLoad()Objective C
- (void)windowDidLoadОбсуждение
Реализация по умолчанию ничего не делает.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Отправленный, прежде чем окно, принадлежавшее получателю, загружается.
Объявление
Swift
func windowWillLoad()Objective C
- (void)windowWillLoadОбсуждение
Реализация по умолчанию ничего не делает.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает документ, связанный с окном, которым управляет получатель.
Объявление
Swift
unowned(unsafe) var document: AnyObject?Objective C
@property(assign) id documentПараметры
documentНовый документ.
Обсуждение
Документы автоматически вызывают этот метод, когда они добавляют контроллер окна к своему списку контроллеров окна; Вы не должны вызывать его непосредственно.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает документ, связанный с получателем.
Объявление
Swift
unowned(unsafe) var document: AnyObject?Objective C
@property(assign) id documentВозвращаемое значение
Документ связался с получателем или
nilесли нет ни одного.Обсуждение
Когда контроллер окна добавляется к списку документа контроллеров окна, документ устанавливает документ контроллера окна с
setDocument:. Набор Приложения использует этот выход для доступа к документу для соответствующих сообщений следующего респондента.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает отредактированный флаг документа для контроллера окна.
Объявление
Swift
func setDocumentEdited(_flag: Bool)Objective C
- (void)setDocumentEdited:(BOOL)flagПараметры
flagYEStrueесли документ был отредактирован начиная с его последнего сохранения,NOfalseесли это не имеет.Обсуждение
Контроллер окна использует этот флаг, чтобы управлять, обнаруживается ли его связанное окно как грязное. Вы не должны вызывать этот метод непосредственно для контроллеров окна с ассоциированным документом; документ вызывает этот метод на своих контроллерах окна по мере необходимости.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Закрывает окно, если оно было загружено.
Объявление
Swift
func close()Objective C
- (void)closeОбсуждение
Поскольку этот метод закрывает окно, не прося у пользователя подтверждение, Вы обычно не вызываете его, когда выбрана команда меню Close. Вместо этого вызовите NSWindow’s
performClose:на окне получателя.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Закрываются возвраты, закрывает ли получатель обязательно ассоциированный документ, когда окно это управляет.
Объявление
Swift
var shouldCloseDocument: BoolObjective C
@property BOOL shouldCloseDocumentВозвращаемое значение
YEStrueесли получатель обязательно закрывает ассоциированный документ, когда окно, которым это управляет, закрывается,NOfalseиначе.Обсуждение
Если
NOfalse, документ закрывается только, когда закрывается последнее остающееся окно документа.Значение по умолчанию
NOfalse.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Закрываются наборы, должен ли получатель обязательно закрыть ассоциированный документ, когда окно это управляет.
Объявление
Swift
var shouldCloseDocument: BoolObjective C
@property BOOL shouldCloseDocumentПараметры
flagYEStrueесли получатель обязательно закрывает ассоциированный документ, когда окно, которым это управляет, закрывается,NOfalseиначе.Обсуждение
Если
NOfalse, документ закрывается только, когда закрывается последнее остающееся окно документа.Значение по умолчанию
NOfalse.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает владельца файла пера, содержащего окно, которым управляет получатель.
Объявление
Swift
unowned(unsafe) var owner: AnyObject { get }Objective C
@property(assign, readonly) id ownerВозвращаемое значение
Владелец файла пера, содержащего окно, которым управляет получатель; обычно
self, но может быть документ получателя или некоторый другой объект.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает имя файла пера, хранящего окно, связанное с получателем.
Объявление
Swift
var windowNibName: String? { get }Objective C
@property(copy, readonly) NSString *windowNibNameВозвращаемое значение
Имя файла пера, хранящего окно, связанное с получателем.
Обсуждение
Если
initWithWindowNibPath:owner:использовался для инициализации экземпляра,windowNibNameвозвращает последний компонент контура с “.nib” расширение неизолированным. ЕслиinitWithWindowNibName:илиinitWithWindowNibName:owner:использовался,windowNibNameвозвращает имя без “.nib” расширение.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает полный путь файла пера, хранящего окно, связанное с получателем.
Объявление
Swift
var windowNibPath: String? { get }Objective C
@property(copy, readonly) NSString *windowNibPathВозвращаемое значение
Полный путь файла пера, хранящего окно, связанное с получателем;
nilесли это не может быть расположено.Обсуждение
Если
initWithWindowNibPath:owner:использовался для инициализации экземпляра, путь просто возвращается. ЕслиinitWithWindowNibName:илиinitWithWindowNibName:owner:использовался,windowNibPathопределяет местоположение пера в пакете класса владельца файла или в основном пакете приложения и возвращает полный путь (илиnilесли это не может быть расположено). Подклассы могут переопределить это для увеличения поискового поведения, но вероятно должны вызватьsuperсначала.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Наборы, должно ли окно расположиться каскадом в связи с другими окнами документа.
Объявление
Swift
var shouldCascadeWindows: BoolObjective C
@property BOOL shouldCascadeWindowsПараметры
flagYEStrueесли окно должно расположиться каскадом в связи с другими окнами документа,NOfalseиначе.Обсуждение
Расположение каскадом в связи с другими окнами документа означает иметь немного расположение смещения так, чтобы строки заголовка ранее выведенных на экран окон были все еще видимы.
Значение по умолчанию
YEStrue.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвраты, расположится ли окно каскадом в связи с другими окнами документа, когда оно будет выведено на экран.
Объявление
Swift
var shouldCascadeWindows: BoolObjective C
@property BOOL shouldCascadeWindowsВозвращаемое значение
YEStrueесли окно расположится каскадом в связи с другими окнами документа,NOfalseиначе.Обсуждение
Значение по умолчанию
YEStrue.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Определяет имя, под которым кадр окна сохраняется в базе данных значений по умолчанию.
Объявление
Swift
var windowFrameAutosaveName: String?Objective C
@property(copy) NSString *windowFrameAutosaveNameПараметры
nameИмя, под которым кадр окна сохраняется в базе данных значений по умолчанию.
Обсуждение
По умолчанию,
nameпустая строка, не заставляя информации быть сохраненным в базе данных значений по умолчанию.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает имя, под которым прямоугольник кадра окна, принадлежавшего получателю, сохранен в базе данных значений по умолчанию.
Объявление
Swift
var windowFrameAutosaveName: String?Objective C
@property(copy) NSString *windowFrameAutosaveNameВозвращаемое значение
Имя, под которым прямоугольник кадра окна, принадлежавшего получателю, сохранен в базе данных значений по умолчанию.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Синхронизирует выведенный на экран заголовок окна и представленное имя файла с информацией в ассоциированном документе.
Объявление
Swift
func synchronizeWindowTitleWithDocumentName()Objective C
- (void)synchronizeWindowTitleWithDocumentNameОбсуждение
Если контроллер окна не имеет никакого ассоциированного документа или загруженного окна, ничего не делает. Этот метод запрашивает документ контроллера окна для получения имени дисплея документа и всего пути имени файла, затем вызывает
windowTitleForDocumentDisplayName:заставить имя дисплея показывать в заголовке окна.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает заголовок окна, который будет использоваться для данного имени дисплея документа.
Объявление
Параметры
displayNameИмя дисплея для документа. Это - последний компонент контура, под которым сохраняется файл документа.
Обсуждение
Возвраты реализации по умолчанию
displayName. Подклассы могут переопределить этот метод для настройки заголовка окна. Например, приложение CAD могло добавить “- Вершина” или “- Сторона”, в зависимости от представления, выведенного на экран окном.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
