选择器到单身人士的方法
问题描述:
这听起来像一个愚蠢的问题,但我一直在努力寻找一个解决方案几个小时,现在我仍然不知道该怎么做。我正在使用Swift 3.0,我在调用另一个类中的选择器的单例类中的方法时遇到了问题。我的单身类如下:选择器到单身人士的方法
class Singleton : NSObject {
static let sharedInstance = Singleton()
private override init() {} // defeats instantiation
func myAction() {
// do something useful...
}
}
然后,这里是从我打电话包含在辛格尔顿方法的类:
class StatusBarPresenter {
func addItemsToMenu(menu: NSMenu) {
...
menu.insertItem(withTitle: "Disconnect this network",
action: #selector(Singleton.sharedInstance.myAction),
keyEquivalent: "D", at: 4)
...
}
}
的Xcode不抱怨的代码...它编译没有任何错误或警告,但选择器不起作用。我添加到菜单中的UIMenuItem
被禁用,这意味着选择器不工作。如果选择器调用类中的方法,则一切正常。这是我得到的截图:
答
感谢Martin R.为指出,在我的代码我没有设置为UIMenuItem一个明确的目标,从而导致它被nil
最终self
。 下面一行添加到addItemsToMenu
功能之后调用insertItem
解决了这个问题:
menu.item(at: 4)?.target = Singleton.sharedInstance
你在哪里设置*目标,*菜单项行动?比较例如https://*.com/a/1970202/1187415。 –
我完全忘了它......谢谢!将添加一个答案。非常感谢你。 :) –