选择器到单身人士的方法

问题描述:

这听起来像一个愚蠢的问题,但我一直在努力寻找一个解决方案几个小时,现在我仍然不知道该怎么做。我正在使用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被禁用,这意味着选择器不工作。如果选择器调用类中的方法,则一切正常。这是我得到的截图:

A screenshot of the error

+1

你在哪里设置*目标,*菜单项行动?比较例如https://*.com/a/1970202/1187415。 –

+0

我完全忘了它......谢谢!将添加一个答案。非常感谢你。 :) –

感谢Martin R.为指出,在我的代码我没有设置为UIMenuItem一个明确的目标,从而导致它被nil最终self 。 下面一行添加到addItemsToMenu功能之后调用insertItem解决了这个问题:

menu.item(at: 4)?.target = Singleton.sharedInstance