通过菜单项显示的窗口设置不正确?

时间:2012-09-07 14:39:56

标签: objective-c macos cocoa

我在iOS上玩了一段时间后,正在开发我的第一个原生mac应用程序。

我试图从菜单项启动一个窗口,但我怀疑我做错了。任何IBAction我连接到这个新窗口上的按钮都会返回错误。

这是我正在做的事情。从菜单项我启动:

-(IBAction)displaySAInput:(id)sender{

NSLog(@"Input selected.");
inputSAViewController = [[NSWindowController alloc] initWithWindowNibName:@"InputViewController"];
[inputSAViewController showWindow:self];

这将启动InputViewController类所拥有的InputViewController笔尖。我将InputViewController类设置为继承自NSWindowController

InputViewController.m上我测试了IBAction,例如:

-(IBAction)testButton:(id)sender{

NSLog(@"Data recalled?");

}

我通过Interface Builder将此IBAction连接到一个按钮。一切看起来还不错。

当我构建并打开InputViewController窗口时,我在控制台中收到此错误,然后单击任何内容:

Could not connect the action testButton: to target of class NSWindowController

我进行了广泛的搜索但是我的无知阻止了我连接点。这个帖子based on a similar error with NSApplication看起来很有希望,但我不太清楚我需要做什么才能使连接发生与NSWindowController错误有关。

这应该很简单。我错过了什么?

2 个答案:

答案 0 :(得分:1)

您的代码:

-(IBAction)displaySAInput:(id)sender{
    NSLog(@"Input selected.");
    inputSAViewController = [[NSWindowController alloc]
                  initWithWindowNibName:@"InputViewController"];
    [inputSAViewController showWindow:self];
}

请注意,您正在分配/启动NSWindowController的通用实例,而不是您已实现testButton:方法的自定义子类。我假设您可能希望将其更改为:

-(IBAction)displaySAInput:(id)sender{
    NSLog(@"Input selected.");
    inputSAViewController = [[InputViewController alloc]
                  initWithWindowNibName:@"InputViewController"];
    [inputSAViewController showWindow:self];
}

答案 1 :(得分:0)

只需先加载NSWindow并使其不可见,当调用IBAction时,只需执行以下操作:

[myWindow setIsVisible:YES];
[myWindow setLevel:NSFloatingWindowLevel];

耶!