我正在尝试显示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的经验不是很丰富,那么我应该在这里找什么?