Одна проблема с другими ответами (т. Е. Просто с просмотром self.view.window
) заключается в том, что они не учитывают случай, когда, когда представление скрыто, его свойство window
будет nil
.Представление может быть скрыто по многим причинам (например, оно может быть в одном из невыбранных представлений в представлении с вкладками).
Следующее (быстрое) расширение предоставит windowController
для NSViewController
, поднявшись по иерархии контроллера представления, из которой затем можно изучить свойство window
:
public extension NSViewController {
/// Returns the window controller associated with this view controller
var windowController: NSWindowController? {
return ((self.isViewLoaded == false ? nil : self.view)?.window?.windowController)
?? self.parent?.windowController // fallback to the parent; hidden views like those in NSTabView don't have a window
}
}