dismissPopUp无法识别

时间:2010-05-27 06:30:26

标签: objective-c cocoa macos appkit

假设button1是NSPopUpButton 假设显示并正在跟踪附加到button1的菜单。

[[button1 cell] dismissPopUp] --- dismissPopUp无法识别。

为什么无法识别dismissPopUp方法?

由于

1 个答案:

答案 0 :(得分:0)

因为NSCells不响应dismissPopUp消息。

如果您在运行时将此作为例外,请确保button1确实是一个弹出按钮 - 也就是说,确保您将该出口连接到IB中的正确对象,或者如果您在代码中创建了对象,则在那里分配了正确的对象。在后一种情况下,使用调试器检查变量。

如果这只是你从编译器得到的警告,可能是因为cell是NSControl(NSPopUpButton的超级类)的方法,并且被输入为返回NSCell。编译器无法知道此特定控件将返回NSPopUpButtonCell。解决方案是将cell消息的结果分配给键入为NSPopUpButtonCell *的变量,然后将dismissPopUp消息发送到该变量中的对象:

NSPopUpButtonCell *cell1 = [button1 cell];
[cell1 dismissPopUp];

如果仍然收到警告,则需要在[button1 cell]表达式前面添加显式强制转换。