gpt4 book ai didi

Cocoa:插件无法打开应用程序窗口

转载 作者:行者123 更新时间:2023-12-03 18:05:54 24 4
gpt4 key购买 nike

我正在为 OsiriX 开发一个插件。

在该应用程序中我有 3-4 个 nib 文件。另外,在插件中,还有名为 PluginFilter 的文件(.h 和 .m),其中存在名为 - (long) filterImage:(NSString) menuName 的方法,插件从该文件开始执行。现在我的问题是,我已经返回启动主窗口的代码位于其他一些 .m 文件中,我必须使用上面提到的方法调用该文件。

该应用程序有多个 nib 文件。我有一个插件名称 PluginFilter 调用者:

- (long) filterImage:(NSString*) menuName

此方法调用时插件应打开一个窗口。定义窗口 Controller 的代码位于另一个 Nib 中。当我在插件中调用 filterimage 方法时,该窗口永远不会出现。

这是我的 filterImage: 方法。

#import "XGridInOsiriXFilter.h"
#import "MainWindowController.h"

@implementation XGridInOsiriXFilter

- (void) initPlugin
{

}

- (long) filterImage:(NSString*) menuName
{

MainWindowController *mainWindowController = [[GridSampleMainWindowController alloc] init];
[mainWindowController showWindow:self ];
[mainWindowController release];

return 0;
}

@end

调用该方法不会产生警告或错误,窗口只是无法出现。

最佳答案

我意识到这可能来得太晚了,但我一直在寻找一种方法来完成您所要求的同样的事情并找到了它。您可以使用 NSBundle 加载所需的 Nib 并将其指向实例化的 Controller 。喜欢:

@implementation YourPluginFilter

- (void) initPlugin
{
yourWindowController = [[YourWindowController alloc] init];
NSLog(@"Initialized YourWindowController");
}

- (long) filterImage:(NSString*) menuName
{
if (yourWindowController && [NSBundle loadNibNamed:@"YourNibName" owner:yourWindowController]) {
NSLog(@"Activated yourWindowController");
return 0;
} else {
return -1;
}
}

@end

关于Cocoa:插件无法打开应用程序窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408984/

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