gpt4 book ai didi

cocoa - SystemStatusBar::NSStatusItem 的选择器无法识别

转载 作者:行者123 更新时间:2023-11-28 13:19:47 28 4
gpt4 key购买 nike

我正在尝试在单击 NSStatusItem 时接收事件(执行操作)。然而,这是我在控制台中看到的(应用程序没有崩溃)- unrecognized selector sent to instance

2014-11-14 00:42:29.565 T1[90662:303] -[NSSystemStatusBar somethingHappened]: unrecognized selector sent to instance 0x61000008c990
2014-11-14 00:42:29.573 T1[90662:303] (
0 CoreFoundation
. . .

这是我尝试使用的代码:

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate
{
var statusBar = NSStatusBar.systemStatusBar();
var statusBarItem : NSStatusItem! = NSStatusItem();
override func awakeFromNib()
{
statusBarItem = statusBar.statusItemWithLength(-1)
statusBarItem.target = self
statusBarItem.action = Selector("somethingHappened");
statusBarItem.menu = nil;
}
@IBAction func somethingHappened(sender: NSStatusItem)
{
println("Hello from StatusItem");
}
}

为了理解这其中出了什么问题,我已经将几个完全相似的 Objective-C 教程翻译成 Swift,但似乎有一些我遗漏但无法弄清楚的东西。

最佳答案

statusBarItem.target = NSStatusBar.systemStatusBar()
statusBarItem.action = Selector("somethingHappened")

应该是

statusBarItem.target = self
statusBarItem.action = Selector("somethingHappened:");

Action 目标是 AppDelegate 实例,选择器“somethingHappened:”(带冒号)因为该方法接受一个参数。

对于 Swift 2.2/Xcode 7.3

statusBarItem.action = #selector(somethingHappened(_:));

关于cocoa - SystemStatusBar::NSStatusItem 的选择器无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916673/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com