Это решение, которое я придумал. В основном захватите массив контроллеров представления в методе prepareforsegue, затем в методе viewwilldisappear выполните итерацию по массиву и закройте окна, связанные с контроллерами представления.
prepareforsegue
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
print("in prepare for seque")
if (segue.identifier!.rawValue == "viewSegmentsSegue"){
let viewController = segue.destinationController as! NSViewController
self.segmentsArray?.append(viewController)
}
}
viewwilldisappear ()
override func viewWillDisappear() {
for segments:NSViewController in segmentsArray!{
segments.view.window?.close()
}
}