diff --git a/Sources/CustomizablePopoverSegue.swift b/Sources/CustomizablePopoverSegue.swift index 4b12f92..8d0d823 100644 --- a/Sources/CustomizablePopoverSegue.swift +++ b/Sources/CustomizablePopoverSegue.swift @@ -15,12 +15,13 @@ class CustomizablePopoverSegue: NSStoryboardSegue { var preferredEdge: NSRectEdge = NSMinXEdge var appearance: NSAppearance? { - get { - return popover.appearance - } - set { - popover.appearance = newValue - } + get { return popover.appearance } + set { popover.appearance = newValue } + } + + var popoverDelegate: NSPopoverDelegate? { + get { return popover.delegate } + set { popover.delegate = newValue } } private let popover = NSPopover() diff --git a/Sources/MainViewController.swift b/Sources/MainViewController.swift index 0523f2d..5e6eb50 100644 --- a/Sources/MainViewController.swift +++ b/Sources/MainViewController.swift @@ -8,11 +8,13 @@ import AppKit -class MainViewController: NSViewController { +class MainViewController: NSViewController, NSPopoverDelegate { @IBOutlet weak var appearanceSelection: NSMatrix! @IBOutlet weak var positionSelection: NSMatrix! + // MARK: - Storyboard Segue + override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject?) { if segue.identifier == "DetachablePopover" { let popoverSegue = segue as CustomizablePopoverSegue @@ -21,9 +23,18 @@ class MainViewController: NSViewController { popoverSegue.positioningView = button popoverSegue.appearance = appearanceForSelectedRadioButton(appearanceSelection.selectedRow) popoverSegue.preferredEdge = preferredEdgeForSelectedRadioButton(positionSelection.selectedRow) + popoverSegue.popoverDelegate = self } } + // MARK: - Popover Delegate + + func popoverShouldDetach(popover: NSPopover) -> Bool { + return true + } + + // MARK: - Helper Methods + private func appearanceForSelectedRadioButton(radioButton: Int) -> NSAppearance { switch radioButton { case 0: return NSAppearance(named: NSAppearanceNameAqua)!