这是我到目前为止所得到的。
- (IBAction)HUDPanelDictionaryHide:(id)sender{
extern NSPanel HUDPanelDictionary;
[HUDPanelDictionary close];
}
这显然不起作用。
HUDPanelDictionary在.xib文件的单独.h和.m文件中声明。我需要从另一个.h和.m文件关闭此面板以获取另一个.xib文件。对不起,我太模糊了!
任何想法??
利亚
答案 0 :(得分:1)
您需要#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:
之类的操作,因此无需进行任何类型的转发。