gpt4 book ai didi

objective-c - 从单独的源文件关闭一个源文件中的面板

转载 作者:行者123 更新时间:2023-12-03 18:04:43 25 4
gpt4 key购买 nike

这就是我到目前为止所得到的。

- (IBAction)HUDPanelDictionaryHide:(id)sender{
extern NSPanel HUDPanelDictionary;
[HUDPanelDictionary close];
}

这显然行不通。

HUDPanelDictionary 在 .xib 文件的单独 .h 和 .m 文件中声明。我需要从另一个 .xib 文件的其他 .h 和 .m 文件中关闭此面板。抱歉我说得这么含糊!

有什么想法吗?

以利亚

最佳答案

您需要#import包含 HUDPanelDictionary 声明的 header 。

例如:

#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 的主要职责放在单个 Controller 类的实例上,其他 Controller (例如管理主窗口工具栏的 Controller )可以将其交互转发到该实例。您甚至可以将字典 HUD 窗口 Controller 放入响应程序链中,使其自动处理诸如 -hideDictionaryPanel: 之类的操作,因此无需执行此类转发。

关于objective-c - 从单独的源文件关闭一个源文件中的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com