参数类型'ContentView'应是类或类约束类型的实例。迅捷用户界面



我想触发一个功能,在状态栏控制器与一个按钮在内容视图隐藏或显示菜单栏弹出窗口,但我得到这个错误:

参数类型'ContentView'预计是类的实例或class-constrained类型

状态栏控制器
..........
init(_ popover: NSPopover)
{
self.popover = popover
statusBar = NSStatusBar.init()
statusItem = statusBar.statusItem(withLength: 28.0)

if let statusBarButton = statusItem.button {
statusBarButton.image = #imageLiteral(resourceName: "StatusBarIcon")
statusBarButton.image?.size = NSSize(width: 18.0, height: 18.0)
statusBarButton.image?.isTemplate = true

statusBarButton.action = #selector(togglePopover(sender:))
statusBarButton.target = self
}

eventMonitor = EventMonitor(mask: [.leftMouseDown, .rightMouseDown], handler: mouseEventHandler)
}

@objc func showPopover(sender: AnyObject) {
if(popover.isShown) {
hidePopover(sender)
}
else {
displayPopover()
}
}
func displayPopover() {
if let statusBarButton = statusItem.button {
popover.show(relativeTo: statusBarButton.bounds, of: statusBarButton, preferredEdge: NSRectEdge.maxY)
eventMonitor?.start()
}
}
func hidePopover(_ sender: AnyObject) {
popover.performClose(sender)
eventMonitor?.stop()
}

func mouseEventHandler(_ event: NSEvent?) {
if(popover.isShown) {
hidePopover(event!)
}
}

ContentView

var statusBar: StatusBarController?
Button("Show/Hide Popover "){
statusBar?.showPopover(sender: self)        
}

给它命名为nilsender,比如

Button("Show/Hide Popover "){
statusBar?.showPopover(sender: nil)  // << here !!        
}

,并使所有控制器动作具有可选的发送者,如

@objc func showPopover(sender: AnyObject?) {
// ...

最新更新