假设button1是NSPopUpButton 假设显示并正在跟踪附加到button1的菜单。
[[button1 cell] dismissPopUp] --- dismissPopUp无法识别。
为什么无法识别dismissPopUp方法?
由于
答案 0 :(得分:0)
因为NSCells不响应dismissPopUp
消息。
如果您在运行时将此作为例外,请确保button1
确实是一个弹出按钮 - 也就是说,确保您将该出口连接到IB中的正确对象,或者如果您在代码中创建了对象,则在那里分配了正确的对象。在后一种情况下,使用调试器检查变量。
如果这只是你从编译器得到的警告,可能是因为cell
是NSControl(NSPopUpButton的超级类)的方法,并且被输入为返回NSCell。编译器无法知道此特定控件将返回NSPopUpButtonCell。解决方案是将cell
消息的结果分配给键入为NSPopUpButtonCell *
的变量,然后将dismissPopUp
消息发送到该变量中的对象:
NSPopUpButtonCell *cell1 = [button1 cell];
[cell1 dismissPopUp];
如果仍然收到警告,则需要在[button1 cell]
表达式前面添加显式强制转换。