您需要#import
含HUDPanelDictionary聲明的標題。
例如:
#import "HUDPanelDictionary.h"
@interface MyController
- (IBAction)hideDictionaryPanel:(id)sender {
[HUDPanelDictionary close];
}
@end
我也是會說出不同的事情,例如 「DictionaryHUD」,而不是 「HUDPanelDictionary。」 「Panel」與「HUD」是多餘的,你應該關心它的意圖而不是它在類層次結構中的位置。
我會做的另一件事是使DictionaryHUD成爲NSWindowController的子類,並讓它暴露一個單例共享實例,而不是使用全局變量指向面板本身。然後,上面的代碼應該是這樣的:
#import "DictionaryController.h"
@interface MyController
- (IBAction)hideDictionaryPanel:(id)sender {
[[DictionaryController sharedDictionaryController] hideDictionaryPanel:sender];
}
@end
這使你的字典面板的主要責任/ HUD上的單個控制器類的實例,到其他控制器(說一個管理主窗口的工具欄)可以轉發他們的互動。你甚至可以把字典HUD窗口控制器放在響應鏈中,讓它自動處理像-hideDictionaryPanel:
這樣的動作,所以沒有必要做這種轉發。
HUDPanelDictionary是一個類還是實例?我猜這是NSPanel的一個實例,給出了你上面想說的。 – 2010-07-11 21:46:04
是的,這是一個實例。我只需要關閉另一個.h和.m文件的.h和.m文件中的面板。 – objectiveccoder001 2010-07-11 21:48:17
請注意,對象的實例始終是指針,無論是「id」還是「SomeClass *」。因此「extern NSPanel HUDPanelDictionary;」在Objective-C中是無意義的,因爲它缺少*。 – 2010-07-11 21:50:04