您需要#import
包含 HUDPanelDictionary 声明的标头。
例如:
#import "HUDPanelDictionary.h"
@interface MyController
- (IBAction)hideDictionaryPanel:(id)sender {
[HUDPanelDictionary close];
}
@end
我也会以不同的方式命名,例如“DictionaryHUD”而不是“HUDPanelDictionary”。“面板”与“HUD”是多余的,你应该更关心它的意图而不是它在类层次结构中的位置。
我要做的另一件事是使 DictionaryHUD 成为 NSWindowController 子类,并让它公开一个单例共享实例,而不是使用全局变量来指向面板本身。那么上面的代码将如下所示:
#import "DictionaryController.h"
@interface MyController
- (IBAction)hideDictionaryPanel:(id)sender {
[[DictionaryController sharedDictionaryController] hideDictionaryPanel:sender];
}
@end
这将字典面板/HUD 的主要责任放在单个控制器类的实例上,其他控制器(比如管理主窗口工具栏的控制器)可以转发它们的交互。您甚至可以将字典 HUD 窗口控制器放在响应者链中,让它自动处理诸如此类的操作,-hideDictionaryPanel:
因此无需进行此类转发。