NSPopoverからWindowにViewを分裂させる

( macOS )

NSPopoverからWindowにViewを分裂させる

BearのアプリのようにPopoverからタップを移動することでWindowにに分離する方法を知りたくて調査した。

まず、popover自体はNSPopoverを利用すれば表示することができる。 WindowにするにはNSPopoverのあるデリゲートメソッドを記述すればできるようになる

NSPopover

           popover.contentViewController = viewController
            popover.delegate = self
            popover.behavior = NSPopover.Behavior.transient

分離方法

NSPopoverDelegate

    func popoverShouldDetach(_ popover: NSPopover) -> Bool {
        return true
    }

Detaches the popover creating a window containing the content.

以下のメソッドでカスタムのwindowを作ることができる

    func detachableWindow(for popover: NSPopover) -> NSWindow? {
        return nil
        //return detachedWindowController.window
    }

Referer