NSPopover仅在从Xcode运行时显示

时间:2019-09-09 05:19:04

标签: macos appkit

我正在尝试显示NSStatusBar的弹出窗口,并且从Xcode运行该窗口时效果很好,但是一旦我导出该应用程序,直接运行,该弹出窗口就永远不可见。

let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)
let popover = NSPopover()

...

func applicationDidFinishLaunching(_ aNotification: Notification) {
    if let button = statusItem.button {
      button.image = NSImage(named: NSImage.Name(rawValue: "StatusBarButtonImage"))
      button.action = #selector(AppDelegate.togglePopover(_:))
    }

    let storyboard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
    let identifier = NSStoryboard.SceneIdentifier(rawValue: "TestViewController")
    guard let viewcontroller = storyboard.instantiateController(withIdentifier: identifier) as? TestViewController else {
      fatalError("Why cant i find TestViewController? - Check Main.storyboard")
    }

    popover.contentViewController = viewcontroller
    popover.delegate = self
}

func showPopover(sender: Any?) {
    logger?("showPopover\n")
    if let button = statusItem.button {
      logger?(button.bounds.debugDescription)
      popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY)
    }
  }

我可以确保showPopover被调用,但popoverDidShow没有被调用。

我对AppKit的经验不是很丰富,那么我应该在这里找什么?

0 个答案:

没有答案