import Foundation import AppKit class ExportAccessoryView : NSView { @IBOutlet weak var typeBox: NSPopUpButton! var savePanel: NSSavePanel? = nil func setSavePanel(_ savePanel: NSSavePanel?) { self.savePanel = savePanel } @IBAction func changeFileFormat(_ sender: Any) { switch(typeBox.indexOfSelectedItem) { case 0: savePanel?.allowedFileTypes = ["tiff"] break case 1: savePanel?.allowedFileTypes = ["bmp"] break case 2: savePanel?.allowedFileTypes = ["jpeg"] break case 3: savePanel?.allowedFileTypes = ["png"] break case 4: savePanel?.allowedFileTypes = ["psd"] break default: break } } } extension NSView { class func fromNib() -> T? { var topLevelObjects : NSArray? guard Bundle.main.loadNibNamed("\(self)", owner: nil, topLevelObjects: &topLevelObjects) else { return nil } return topLevelObjects!.first(where: { $0 is T }) as? T } }