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(window
window
: NSWindow?)Objective C
- (instancetype)initWithWindow:(NSWindow *)
window
Параметры
window
Объект окна для управления; может быть
nil
.Возвращаемое значение
Недавно инициализированный контроллер окна.
Обсуждение
Этот метод является определяемым инициализатором для
NSWindowController
.Этот инициализатор полезен, когда окно было загружено, но не присваивается никакой контроллер окна. Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocument
флаг кNO
false
, и определяет имя автосохранения рамки окна к пустой строке. Как побочный эффект, создаваемый контроллер окна добавляется как наблюдательNSWindowWillCloseNotification
s отправленный тем объектом окна (который обрабатывается закрытым методом). При создании контроллера окна делегатом окна можно реализовать NSWindow’swindowShouldClose:
метод делегата.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает контроллер окна, инициализированный с файлом пера.
Объявление
Swift
convenience init(windowNibName
windowNibName
: String)Objective C
- (instancetype)initWithWindowNibName:(NSString *)
windowNibName
Параметры
windowNibName
Имя файла пера (минус “
.nib
” расширение), который архивирует окно получателя; не может бытьnil
.Обсуждение
Устанавливает владельца файла пера к получателю. Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocument
флаг кNO
false
, и определяет имя автосохранения для кадра окна к пустой строке.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает контроллер окна, инициализированный с файлом пера и указанным владельцем для того файла пера.
Объявление
Swift
convenience init(windowNibName
windowNibName
: String, ownerowner
: AnyObject)Objective C
- (instancetype)initWithWindowNibName:(NSString *)
windowNibName
owner:(id)owner
Параметры
windowNibName
Имя файла пера (минус “
.nib
” расширение), который архивирует окно получателя; не может бытьnil
.owner
Владелец файла пера; не может быть
nil
.Обсуждение
Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocument
флаг кNO
false
, и определяет имя автосохранения для кадра окна к пустой строке.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает контроллер окна, инициализированный с файлом пера в абсолютном пути и указанном владельце.
Объявление
Swift
convenience init(windowNibPath
windowNibPath
: String, ownerowner
: AnyObject)Objective C
- (instancetype)initWithWindowNibPath:(NSString *)
windowNibPath
owner:(id)owner
Параметры
windowNibPath
Полный путь к файлу пера, архивирующему окно получателя; не может быть
nil
.owner
Владелец файла пера; не может быть
nil
.Обсуждение
Используйте этот метод, если Ваш файл пера в фиксированном расположении (который не является или в пакете класса владельца файла или в основном пакете приложения). Инициализация по умолчанию включает расположение каскадом, наборы
shouldCloseDocument
флаг кNO
false
, и определяет имя автосохранения для кадра окна к пустой строке.Оператор импорта
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
отметьте набор кYES
true
, окно выведено на экран перед всеми другими окнами, но не сделано ключевым; иначе это выведено на экран впереди и сделано ключевым. Этот метод полезен для действий меню.Оператор импорта
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
Возвращаемое значение
YES
true
если файл пера, содержащий окно получателя, был загружен,NO
false
иначе.Оператор импорта
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
Параметры
flag
YES
true
если документ был отредактирован начиная с его последнего сохранения,NO
false
если это не имеет.Обсуждение
Контроллер окна использует этот флаг, чтобы управлять, обнаруживается ли его связанное окно как грязное. Вы не должны вызывать этот метод непосредственно для контроллеров окна с ассоциированным документом; документ вызывает этот метод на своих контроллерах окна по мере необходимости.
Оператор импорта
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: Bool
Objective C
@property BOOL shouldCloseDocument
Возвращаемое значение
YES
true
если получатель обязательно закрывает ассоциированный документ, когда окно, которым это управляет, закрывается,NO
false
иначе.Обсуждение
Если
NO
false
, документ закрывается только, когда закрывается последнее остающееся окно документа.Значение по умолчанию
NO
false
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Закрываются наборы, должен ли получатель обязательно закрыть ассоциированный документ, когда окно это управляет.
Объявление
Swift
var shouldCloseDocument: Bool
Objective C
@property BOOL shouldCloseDocument
Параметры
flag
YES
true
если получатель обязательно закрывает ассоциированный документ, когда окно, которым это управляет, закрывается,NO
false
иначе.Обсуждение
Если
NO
false
, документ закрывается только, когда закрывается последнее остающееся окно документа.Значение по умолчанию
NO
false
.Оператор импорта
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: Bool
Objective C
@property BOOL shouldCascadeWindows
Параметры
flag
YES
true
если окно должно расположиться каскадом в связи с другими окнами документа,NO
false
иначе.Обсуждение
Расположение каскадом в связи с другими окнами документа означает иметь немного расположение смещения так, чтобы строки заголовка ранее выведенных на экран окон были все еще видимы.
Значение по умолчанию
YES
true
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвраты, расположится ли окно каскадом в связи с другими окнами документа, когда оно будет выведено на экран.
Объявление
Swift
var shouldCascadeWindows: Bool
Objective C
@property BOOL shouldCascadeWindows
Возвращаемое значение
YES
true
если окно расположится каскадом в связи с другими окнами документа,NO
false
иначе.Обсуждение
Значение по умолчанию
YES
true
.Оператор импорта
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 и позже.
См. также